HAVING 절
HAVING 절
HAVING 절은 GROUP BY가 만들어 낸 집계 결과를 필터링할 때 사용해요. WHERE 절과 비슷하지만, WHERE는 집계가 일어나기 전에 수행되고 HAVING은 집계가 끝난 뒤에 수행된다는 차이가 있어요. SELECT 절의 집계 결과를 별칭으로 참조하거나, 쿼리 결과에는 포함되지 않는 추가 집계 값을 기준으로 필터링할 수도 있어요.
출처: 문서
본문
HAVING 절은 GROUP BY가 만들어 낸 집계 결과를 필터링할 수 있게 해줘요. WHERE 절과 비슷하지만, WHERE는 집계가 일어나기 전에 수행되고 HAVING은 집계가 끝난 뒤에 수행된다는 점에서 차이가 있어요. HAVING 절에서는 SELECT 절의 집계 결과를 별칭으로 참조할 수 있어요. 또는 쿼리 결과로 반환되지 않는 추가 집계 값으로 필터링할 수도 있어요.
Example (예제)
sales 테이블이 다음과 같다고 가정해 볼게요.
CREATE TABLE sales
(
region String,
salesperson String,
amount Float64
)
ORDER BY (region, salesperson);
이렇게 쿼리를 실행할 수 있어요.
SELECT
region,
salesperson,
sum(amount) AS total_sales
FROM sales
GROUP BY
region,
salesperson
HAVING total_sales > 10000
ORDER BY total_sales DESC;
이 쿼리는 각 지역에서 총 판매액이 10,000보다 큰 영업사원 목록을 보여줘요.
Limitations (제한 사항)
집계가 수행되지 않는 경우에는 HAVING을 사용할 수 없어요. 이때는 WHERE를 사용해야 해요.