[sql] SQL HAVING 절을 사용하여 그룹화된 데이터 중 특정 날짜 범위에 해당하는 값 조회하기

SQL에서 GROUP BY 절을 사용하여 데이터를 그룹화하고, HAVING 절을 사용하여 특정 조건을 만족하는 그룹을 필터링할 수 있습니다. 이때, 날짜 범위를 조건으로 추가하려면 어떻게 해야 할까요? 아래 예제 코드를 통해 알아보겠습니다.

샘플 데이터

먼저, 다음과 같은 예제 데이터를 사용하여 설명하겠습니다.

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

INSERT INTO orders (order_id, customer_id, order_date, total_amount) VALUES
(1, 1, '2022-01-15', 150.00),
(2, 2, '2022-01-18', 220.00),
(3, 1, '2022-02-02', 180.00),
(4, 3, '2022-02-05', 300.00),
(5, 2, '2022-02-10', 250.00);

특정 날짜 범위에 해당하는 그룹화된 데이터 조회

이제 주문일이 2022년 1월에 해당하는 주문의 총액을 구하고자 합니다. 이를 위해 ORDER BY 절을 사용하여 날짜를 그룹화하고, HAVING 절을 사용하여 2022년 1월에 해당하는 데이터를 필터링할 수 있습니다.

SELECT 
    EXTRACT(YEAR_MONTH FROM order_date) AS year_month,
    SUM(total_amount) AS total_amount
FROM 
    orders
GROUP BY 
    year_month
HAVING 
    year_month = 202201;

위의 쿼리를 실행하면, 2022년 1월에 해당하는 주문의 총액이 조회됩니다. 즉, HAVING 절을 사용하여 그룹화된 데이터 중 특정 날짜 범위에 해당하는 값을 쉽게 조회할 수 있습니다.

이처럼 SQL의 HAVING 절을 활용하여 날짜 범위에 해당하는 그룹화된 데이터를 조회할 수 있습니다.

참고 자료