[sql] SQL HAVING 절을 사용하여 그룹화된 데이터 중 NULL 값 걸러내기

SQL에서 HAVING 절은 그룹 함수를 사용한 결과에 조건을 적용할 때 사용됩니다. 이 절을 사용하여 특정 그룹을 선택하거나 제외할 수 있습니다. 그러나 HAVING 절을 사용하여 NULL 값을 필터링하는 방법에 대해 잘 알지 못하는 경우가 있습니다.

만약 그룹화된 결과 중에서 특정 컬럼의 값이 NULL인 행을 제외하고 싶다면, HAVING 절을 이용하여 이를 처리할 수 있습니다.

예를들어, 아래와 같은 테이블이 있다고 가정해봅시다.

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    total_amount DECIMAL(10, 2)
);

INSERT INTO orders (order_id, customer_id, total_amount)
VALUES
(1, 1, 100.00),
(2, 2, NULL),
(3, 1, 150.00),
(4, 3, 200.00),
(5, 2, 120.00),
(6, 1, NULL);

여기서 total_amount가 NULL인 행을 제외하고, 각 customer_id 별 총 주문 금액을 구하려면 아래와 같은 SQL을 사용할 수 있습니다.

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING COUNT(total_amount) = COUNT(*);

위 SQL에서, HAVING 절은 COUNT(total_amount) = COUNT(*) 조건을 사용하여 total_amount가 NULL이 아닌 행들만 그룹화된 결과에 포함시킵니다.

HAVING 절을 이용하면 그룹화된 데이터에서 NULL 값을 간단히 걸러낼 수 있어 효과적인 데이터 분석이 가능합니다.