보호소에서는 몇 시에 입양이 활발하게 일어나는지 조회하는 문제
조건으로는 09:00부터 19:59까지, 각 시간대별로 입양이 몇건이나 일어나는지 조회하는 SQL문을 작성하는 문제이다.
ORACLE SQL 에서는 MYSQL의 HOUR() 함수가 없으므로 조금 번거롭지만, EXTRACT() 함수로 TIMESTAMP 타입의 데이터에서 시, 분, 초 등을 추출해주어야 한다.
EXTRACT('추출할 날짜요소' from '추출할 컬럼') as '별칭';
나는 '시'를 추출하려고 하니까, 다음과 같이 작성한다.
(💬 DATE 타입은 말 그대로 연, 월, 일 / TIMESTAMP 타입은 연, 월, 일, 시, 분, 초, 밀리초, 타임존까지 나타낼 수 있다.)
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR <= 19
모두 작성한 SQL 문은 아래와 같다
SELECT HOUR, COUNT(HOUR)
FROM (SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR FROM ANIMAL_OUTS)
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR <= 19
ORDEY BY HOUR;