Post

Intermediate SQL: HAVING

Intermediate SQL: HAVING

Description

HAVING 절은 GROUP BY로 그룹화된 결과에 조건을 적용할 때 사용된다. WHERE 절이 개별 행을 필터링하는 반면, HAVING은 집계 결과를 필터링한다는 점에서 차이가 있다. 집계 함수(COUNT, SUM, AVG 등)를 조건으로 사용할 때는 반드시 HAVING 절을 사용해야 한다.

Syntax

집계 함수가 포함된 조건은 WHERE가 아닌 HAVING에 작성해야 한다. HAVING 절은 GROUP BY 절 뒤에 위치한다.

SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;

Example

Basic HAVING

reviews 테이블에서 리뷰 개수가 10개 이상인 product_id만 조회한다.

SELECT product_id, COUNT(*) AS review_count
FROM reviews
GROUP BY product_id
HAVING COUNT(*) >= 10;

HAVING vs WHERE

별점이 4점 이상인 리뷰 중에서, 리뷰 개수가 5개 이상인 상품을 조회한다.

SELECT product_id, COUNT(*) AS review_count
FROM reviews
WHERE stars >= 4
GROUP BY product_id
HAVING COUNT(*) >= 5;

Reference

This post is licensed under CC BY 4.0 by the author.

Trending Tags