본문 바로가기
프로그래머스/[프로그래머스 - ORACLE] Lv.4

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

by 코딩하는 흰둥이 2023. 3. 23.
반응형


CREATE 문
CREATE TABLE ANIMAL_OUTS (
ANIMAL_ID				VARCHAR(50)	NOT NULL,
ANIMAL_TYPE				VARCHAR(50)	NOT NULL,
DATETIME				TIMESTAMP	NOT NULL,
NAME					VARCHAR(50)	NULL,
SEX_UPON_OUTCOME			VARCHAR(50)	NOT NULL
);

  • 내 풀이
SELECT
    A.HOUR,
    COUNT(B.HOUR) AS COUNT
FROM
    (SELECT LEVEL - 1 AS HOUR FROM DUAL CONNECT BY LEVEL <= 24) A LEFT JOIN
    (SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR FROM ANIMAL_OUTS ) B
    ON A.HOUR = B.HOUR
    GROUP BY A.HOUR
    ORDER BY A.HOUR ASC;

임시 테이블에서 CONNECT BY 문을 이용하여 0부터 23까지의 시간을 만들주고 본 테이블에서 시간만 가져와서 JOIN을 건다

이때 서로의 시간을 KEY값으로 잡고 0부터 23까지의 시간이 출력되어야 하기 때문에 LEFT JOIN을 건다

COUNT 함수를 사용하기 때문에 CROUP BY 를 이용해야한다.

댓글