1. HAVING 절이란?
SQL에서 HAVING 절은 데이터를 그룹화한 후 집계 결과에 조건을 적용할 때 사용됩니다. 일반적으로 GROUP BY 절과 함께 사용되며, 집계 후 데이터를 필터링하는 역할을 합니다. HAVING을 사용하면 특정 기준을 만족하는 그룹만 추출할 수 있습니다.
예를 들어, 총 매출이 일정 금액을 초과하는 고객이나 평균 점수가 특정 임계값을 넘는 그룹을 선택하고자 할 때 HAVING을 사용할 수 있습니다. 개별 행에 조건을 적용하는 WHERE 절과 달리, HAVING은 그룹화 후 집계된 결과에 조건을 적용합니다.
HAVING 절 사용 예시
예를 들어, 다음 쿼리는 총 매출이 10,000엔을 초과하는 고객을 추출합니다:
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING SUM(sales) > 10000;
이 쿼리는 SUM 함수를 사용해 각 고객의 총 매출을 계산하고, 그 합계가 10,000엔을 초과하는 고객만 추출합니다.
2. HAVING 절의 기본 구문 및 사용법
HAVING 절의 기본 구문은 다음과 같습니다:
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;
이 구문은 GROUP BY 절로 데이터를 그룹화하고, HAVING 절에 조건을 지정하여 집계 결과를 필터링합니다. 예를 들어, 다음 쿼리는 orders 테이블에서 최소 5건 이상의 주문을 한 고객을 추출합니다:
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) >= 5;
여기서 COUNT 함수는 각 고객의 주문 수를 세며, 5건 이상인 고객만 필터링됩니다.

3. HAVING 절 적용 예시
HAVING 절은 집계 함수와 결합했을 때 고급 데이터 분석에 강력한 도구가 됩니다. 아래는 몇 가지 구체적인 예시입니다.
예시 1: 총 매출 기준 필터링
매출이 10,000엔을 초과하는 제품을 추출하려면 SUM 함수를 다음과 같이 사용합니다:
SELECT product_id, SUM(sales) AS total_sales
FROM products_table
GROUP BY product_id
HAVING SUM(sales) > 10000;
이 쿼리는 각 제품의 총 매출을 계산하고, 그 합계가 10,000엔을 초과하는 제품을 추출합니다.
예시 2: 주문 건수 기준 필터링
10건 이상 주문한 고객을 추출하려면:
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) > 10;
이 쿼리는 각 고객의 주문 수를 계산하고, 10건 이상인 고객만 추출합니다.
4. HAVING과 WHERE의 차이점
HAVING 절과 WHERE 절은 모두 필터링을 수행하지만 적용 시점이 다릅니다.
적용 시점 차이
- WHERE 절 : 그룹화 이전에 적용되어 개별 행을 필터링합니다.
- HAVING 절 : 그룹화 이후에 적용되어 집계된 결과를 필터링합니다.
예를 들어, WHERE와 HAVING을 함께 사용할 경우, 먼저 WHERE를 사용해 매출이 최소 1,000엔인 데이터를 필터링한 뒤, HAVING을 사용해 총 매출이 5,000엔을 초과하는 그룹을 추출할 수 있습니다.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
WHERE sales >= 1000
GROUP BY customer_id
HAVING SUM(sales) > 5000;
이 쿼리에서는 WHERE 절로 필터링된 데이터가 GROUP BY 로 그룹화되고, 이후 HAVING 절이 적용되어 총 매출이 5,000엔을 초과하는 고객만 추출됩니다.

5. HAVING 절 사용 시 유의사항
집계 함수와 함께 사용해야 함
HAVING 절은 집계된 결과를 필터링하기 때문에 SUM이나 COUNT와 같은 집계 함수와 함께 사용해야 합니다. 개별 행에 대한 조건은 WHERE 절이 더 적합합니다.
별칭 사용
(이 섹션은 원본에 내용이 제공되지 않아 그대로 유지합니다.)
HAVING 절에서는 AS 로 지정한 별칭을 조건식에 사용할 수 있습니다. 예를 들어, 총 매출에 별칭을 부여하고 다음과 같이 사용할 수 있습니다:
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING total_sales > 10000;
이 쿼리는 총 매출이 10,000엔을 초과하는 고객을 추출합니다.
6. 요약: HAVING 절 사용 방법
HAVING 절은 조건을 적용하여 집계된 데이터를 유연하게 필터링할 수 있는 강력한 도구입니다. 매출이나 주문 수와 같은 집계 데이터를 분석할 때 특히 유용하며, 효율적인 데이터 분석을 가능하게 합니다. WHERE 절과의 차이를 이해하고 두 절을 적절히 함께 사용함으로써 SQL 쿼리의 유연성을 극대화할 수 있습니다.


