[sql] SQL HAVING 절을 사용하여 그룹화된 데이터 중 다른 그룹과의 조건 검색하기

SQL에서 HAVING 절은 그룹화된 데이터에 대한 조건을 지정하는 데 사용됩니다. 일반적으로 GROUP BY 절 뒤에 따라옵니다. 이 문에서는 HAVING을 사용하여 특정 그룹과 그 외의 그룹을 조건으로 분리하여 검색하는 방법을 알아봅니다.

데이터 준비

다음과 같이 orders 테이블이 있다고 가정해봅시다.

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, 101, 150.00),
(2, 102, 200.00),
(3, 101, 100.00),
(4, 103, 300.00);

특정 조건을 가진 그룹 검색

이제 특정 조건을 가진 그룹을 검색해보겠습니다. 예를 들어, 주문 금액이 200보다 큰 고객의 주문을 검색하고 싶다고 가정해봅시다. 다음의 쿼리를 사용하여 이를 수행할 수 있습니다.

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 200;

위의 쿼리는 주문 금액이 200을 초과하는 고객의 주문을 검색하여 해당 고객의 ID와 총 주문 금액을 반환합니다.

다른 그룹과의 조건 검색

때로는 특정 그룹과 그 외의 그룹을 비교하여 조건 검색을 수행해야 할 수도 있습니다. 예를 들어, 주문 금액이 200보다 큰 고객과 그 외의 고객의 주문을 비교하여 검색하고 싶다고 가정해봅시다.

다음의 쿼리를 사용하여 이를 수행할 수 있습니다.

SELECT customer_id, 
    SUM(total_amount) AS total_spent,
    CASE
        WHEN SUM(total_amount) > 200 THEN 'High spender'
        ELSE 'Low spender'
    END AS spending_category
FROM orders
GROUP BY customer_id;

위의 쿼리는 주문 금액이 200을 초과하는 고객과 그 외의 고객을 비교하여 각 고객의 ID, 총 주문 금액 및 지출 카테고리를 반환합니다.

이제 여러분은 SQL의 HAVING 절을 사용하여 그룹화된 데이터 중 다른 그룹과의 조건 검색을 수행하는 방법을 알게 되었습니다. 이 기능은 데이터를 그룹화하고 조건에 따라 필터링할 때 매우 유용합니다.

더 많은 정보는 SQL HAVING 절을 참조하세요.