SELECT 파트가 데이터를 단순히 조회하는 것이었다면, GROUP BY는 흩어진 데이터를 의미 있는 단위로 묶어 통계를 내는 핵심 과정입니다. 이번 두 문제를 통해 특정 기준(카테고리, 시간대)별 집계 방식을 학습했습니다.
JOIN + SUM)SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES
FROM BOOK_SALES S
JOIN BOOK B ON B.BOOK_ID = S.BOOK_ID
WHERE DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
BOOK_SALES)과 도서 정보(BOOK)를 JOIN하여 카테고리 정보를 가져온 뒤, 카테고리별로 그룹화(GROUP BY)하는 흐름을 익혔습니다.COUNT가 아니라 판매량의 합계를 구할 때는 SUM(컬럼명) 집계 함수를 사용합니다.HOUR 함수)SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR;
DATETIME 형식에서 시간 정보만 필요할 때 HOUR() 함수를 사용하면 0부터 23 사이의 값을 즉시 얻을 수 있습니다.WHERE 절에서 집계된 HOUR 값을 BETWEEN 연산자와 함께 사용하여 특정 시간대(09:00 ~ 19:59)만 필터링하는 효율적인 조건을 작성했습니다.HOUR(DATETIME)에 AS HOUR라는 별칭을 붙여주면, 이후 GROUP BY와 ORDER BY 절에서 긴 함수명 대신 HOUR라는 별칭으로 간결하게 쿼리를 작성할 수 있다는 점이 편리했습니다.WHERE로 먼저 데이터를 걸러낸 뒤 그룹화(GROUP BY)가 진행된다는 SQL의 실행 순서를 다시 한번 복습할 수 있었습니다.