[프로그래머스(Programmers)][SQL] GROUP BY (Lv4) 입양 시각 구하기 (2)

728x90

 

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

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

 

 

0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 시간대 순으로 조회하는 SQL 문

 

#  0 ~ 23 을 행 값으로 가지고 있는 하나의 열 'H'로 구성된 임시 테이블 생성 후,
   ANIMAL_OUTS 테이블과 입양 시간을 기준으로 LEFT OUTER JOIN 하여 'H' 를 기준으로 GROUP BY 수행

 

MySQL

WITH RECURSIVE TIME AS (
    SELECT 0 AS H
    UNION ALL
    SELECT H + 1 FROM TIME WHERE H < 23
)
SELECT H HOUR, COUNT( ANIMAL_ID ) COUNT
FROM TIME LEFT OUTER JOIN ANIMAL_OUTS
ON H = HOUR( DATETIME )
GROUP BY H
ORDER BY H

 

Oracle DB

WITH TIME AS (
    SELECT LV - 1 AS H
    FROM DUAL
    CONNECT BY LV < 25
)
SELECT H HOUR, COUNT( ANIMAL_ID ) COUNT
FROM TIME LEFT OUTER JOIN ANIMAL_OUTS
ON H = TO_NUMBER( TO_CHAR( DATETIME, 'HH24' ) )
GROUP BY H 
ORDER BY H;

 

 

반응형