[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 절을 참조하세요.