https://school.programmers.co.kr/learn/courses/30/lessons/59413
입양 시각 구하기(2) LEVEL 4
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
문제 풀이 SQL CODE
1. RECURSIVE 재귀 쿼리 : 0~ 23의 행 값을 갖는 hour_table 가상 테이블 생성
2. hour_cnt : 시간대별 count 테이블
3. LEFT JOIN : hour_table 테이블과 hour_cnt 테이블 hour 컬럼 기준 JOIN
4. CASE 문 : cnt 값이 NULL인 시간대는 0으로 대체
WITH RECURSIVE hour_table AS (
SELECT 0 AS hour
UNION ALL
SELECT hour + 1 AS hour FROM hour_table
WHERE hour <23
),
hour_cnt AS (
SELECT
HOUR(datetime) AS hour, COUNT(*) AS cnt
FROM ANIMAL_OUTS
GROUP BY hour
)
SELECT
ht.hour AS HOUR,
CASE
WHEN hc.cnt IS NULL THEN 0
ELSE hc.cnt
END AS COUNT
FROM hour_table ht
LEFT JOIN hour_cnt hc ON ht.hour= hc.hour
다른 LEVEL 4 문제 보러가기
2024.12.18 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기 LEVEL 4
2024.12.11 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기 LEVEL 4
2024.12.11 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 저자 별 카테고리 별 매출액 집계하기 LEVEL 4
2024.12.10 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 특정 세대의 대장균 찾기 LEVEL 4
2024.12.06 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기 LEVEL 4
2024.12.05 - [Programmers(SQL 고득점 Kit)/LEVEL 4] - [MySQL] 프로그래머스 - 서울에 위치한 식당 목록 출력하기 LEVEL 4
'Programmers(SQL 고득점 Kit) > LEVEL 4' 카테고리의 다른 글
[MySQL] 프로그래머스 - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 LEVEL 4 (3) | 2024.12.20 |
---|---|
[MySQL] 프로그래머스 - 언어별 개발자 분류하기 LEVEL 4 (3) | 2024.12.19 |
[MySQL] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기 LEVEL 4 (0) | 2024.12.18 |
[MySQL] 프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기 LEVEL 4 (0) | 2024.12.11 |
[MySQL] 프로그래머스 - 저자 별 카테고리 별 매출액 집계하기 LEVEL 4 (0) | 2024.12.11 |