본문 바로가기

기록/알고리즘

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

SMALL

풀이

문제의 접근법은 0~23을 가지고 있는 다른 테이블과 조인하여 값을 도출하는 개념이다.

MySQL에서는 변수를 생성하고 Oracle은 Level을 이용하여 값을 만들어준다.

 

 

--MySQL--
SET @hour := -1;

SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23;

--Oracle--
SELECT D.lv, NVL(E.cnt,0) 
    FROM
        (SELECT TO_CHAR(DATETIME,'HH24') as HOUR ,COUNT(*) cnt 
            FROM ANIMAL_OUTS GROUP BY TO_CHAR(DATETIME,'HH24')
                ORDER BY HOUR)E, 
        (SELECT (LEVEL-1)lv FROM dual CONNECT BY LEVEL <=24)D
WHERE D.lv = E.HOUR(+) ORDER BY D.lv

 


 

SMALL