코테
입양 시각 구하기(2)
하쩨로
2025. 4. 25. 17:00
📝 문제 요약
"상반기 + 7월 주문량 Top3 아이스크림 맛 구하기"
🛒 데이터 구성
FIRST_HALF: 상반기 아이스크림 주문량 (맛별 1행) JULY: 7월 아이스크림 주문량 (같은 맛이라도 여러 출하 가능)
📌 문제 목표
맛(FLAVOR) 기준으로 두 테이블의 TOTAL_ORDER를 합산 총 주문량이 가장 많은 Top3 아이스크림 맛을 구함
[내 풀이] 문제점: 입양이 발생하는 시간대만 출력됨
select hour(datetime) as hour, count(*)
from animal_outs
group by hour(datetime)
order by 1
[좋은 방법] - 재귀 CTE를 활용해 시간대를 생성하는 테이블을 만들어주고, 현재 있는 테이블과 left join을 하는 것!
-- 시간대 생성용 서브쿼리 (0~23)
WITH RECURSIVE hours AS (
SELECT 0 AS hour
UNION ALL
SELECT hour + 1 FROM hours WHERE hour < 23
)
SELECT
h.hour,
COUNT(a.datetime) AS count
FROM hours h
LEFT JOIN animal_outs a
ON HOUR(a.datetime) = h.hour
GROUP BY h.hour
ORDER BY h.hour;
-- 재귀 CTE 사용
WITH RECURSIVE hours AS (
SELECT 0 AS hour -- ① 시작값
UNION ALL
SELECT hour + 1 -- ② 다음 값 생성
FROM hours
WHERE hour < 23 -- ③ 23까지 반복
)