Hodustory/프로그래밍&DB

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

호두밥 2021. 7. 25. 14:56

1. 문제

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

2. 풀이

  • 시간대 가상테이블 만들기 : CONNECT BY LEVEL
  • 시간대 가상테이블과 시간대별 입양건수 연결하기 : OUTER JOIN(LEFT JOIN)
    • 입양건수가 없으면 0을 출력 : NVL
  • 건수 출력 : COUNT
  • 시간순으로 정렬 : ORDER BY 

3. 답안

--ORACLE
SELECT H.HOUR, NVL(T.COUNT, 0) AS COUNT
FROM        
    (SELECT LEVEL-1 AS HOUR 
     FROM DUAL 
     CONNECT BY LEVEL < 25 ) H
    LEFT JOIN
    (SELECT TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) AS HOUR, COUNT(1) AS COUNT
     FROM ANIMAL_OUTS 
     GROUP BY TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) ) T
    ON H.HOUR = T.HOUR
ORDER BY HOUR

;
반응형