본문 바로가기
Programmers(SQL 고득점 Kit)/LEVEL 4

[MySQL] 프로그래머스 - 입양 시각 구하기(2) LEVEL 4

by DADA익선 2024. 12. 18.

https://school.programmers.co.kr/learn/courses/30/lessons/59413

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

입양 시각 구하기(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