https://school.programmers.co.kr/learn/courses/30/lessons/59413
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
재귀 쿼리를 연습해 볼 수 있는 문제인 것 같다.
- 재귀 쿼리로 0시에서 23시까지 생성하는 테이블을 만든다.
- 재귀 쿼리로 만든 가상의 테이블과 ANIMAL_OUTS 테이블을 조인한다. 이때 입양이 발생하지 않는 경우에도 0건으로 조회해야 하기 때문에 LEFT JOIN으로 조인해 준다.
- 시간대별로 그룹핑한다.
- 시간대와 COUNT 키워드로 시간대별 입양 건수를 조회한다. 이때 LEFT JOIN이기 때문에 IFNULL 키워드를 같이 사용하여 입양 건수가 0인 조회 결과를 처리한다.
- 시간대를 기준으로 오름차순 정렬한다.
WITH RECURSIVE HOURS AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM HOURS
WHERE HOUR < 23
)
SELECT
H.HOUR,
IFNULL(COUNT(A.ANIMAL_ID), 0) AS COUNT
FROM
HOURS AS H
LEFT JOIN ANIMAL_OUTS AS A ON H.HOUR = HOUR(A.DATETIME)
GROUP BY
1
ORDER BY
1'SQL > GROUP BY' 카테고리의 다른 글
| [프로그래머스 SQL] Lv.4 - 연간 평가점수에 해당하는 평가 등급 및 성과금조회하기 (0) | 2025.04.14 |
|---|---|
| [프로그래머스 SQL] Lv.4 - 언어별 개발자 분류하기 (0) | 2025.04.10 |
| [프로그래머스 SQL] Lv.4 - 년,월,성별 별 상품 구매 회원 수 구하기 (1) | 2025.04.01 |
| [프로그래머스 SQL] Lv.4 - 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2025.03.31 |
| [프로그래머스 SQL] Lv.4 - 저자 별 카테고리 별 매출액 집계하기 (0) | 2025.03.29 |