본문 바로가기

study/알고리즘

[알고리즘 / Oracle] 프로그래머스 - 입양 시각 구하기(2)

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

 

 

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

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

programmers.co.kr

 

SELECT H.HOUR, NVL(COUNT, 0) as COUNT
FROM 
(SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')) A 
RIGHT JOIN 
(SELECT LEVEL - 1 as HOUR FROM DUAL CONNECT BY LEVEL <= 24) H
ON A.HOUR = H.HOUR 
ORDER BY H.HOUR

 

- GROUP BY로 묶을 때 COUNT(*) 해주면 GROUP BY 컬럼 기준으로 COUNT

 

- (다른 사람 풀이 참고) 0~23까지 hour을 모두 가지고 있는 테이블을 새로 만들어준다.

--> ❗ 계층형 쿼리를 활용 ❗ 

 

SELECT LEVEL - 1 as HOUR FROM DUAL CONNECT BY LEVEL <= 24

 

- 두 테이블을 RIGHT JOIN할 때 as A라고 붙이면 오류 발생

SQL 실행 중 오류가 발생하였습니다.
ORA-00933: SQL command not properly ended

 

- 오라클은 (+)로 OUTER JOIN 표현 가능

 

WHERE A.HOUR(+) = H.HOUR #RIGHT OUTER JOIN

 

- VIEW로 만들어보려고 했으나 권한 할당이 안되는 것 같다.