프로그래머스 ORACLE SQL 문제 풀이

dongeranguk·2021년 12월 4일
0
post-thumbnail
post-custom-banner

GROUP BY 3번째 문제

입양시각 구하기(1)

문제 내용

보호소에서는 몇 시에 입양이 활발하게 일어나는지 조회하는 문제

조건으로는 09:00부터 19:59까지, 각 시간대별로 입양이 몇건이나 일어나는지 조회하는 SQL문을 작성하는 문제이다.

테이블은 아래와 같이 구성되어 있다.

1. 시간대별로 입양이 몇건지 일어나는지 조회하기 위해서는,

ORACLE SQL 에서는 MYSQL의 HOUR() 함수가 없으므로 조금 번거롭지만, EXTRACT() 함수로 TIMESTAMP 타입의 데이터에서 시, 분, 초 등을 추출해주어야 한다.

EXTRACT('추출할 날짜요소' from '추출할 컬럼') as '별칭';

나는 '시'를 추출하려고 하니까, 다음과 같이 작성한다.

EXTRACT(HOUR FROM DATETIME) AS HOUR;

(💬 DATE 타입은 말 그대로 연, 월, 일 / TIMESTAMP 타입은 연, 월, 일, 시, 분, 초, 밀리초, 타임존까지 나타낼 수 있다.)

2. 각 시간대별로

GROUP BY HOUR

3. 다음 조건은 09:00부터 19:59분까지

HAVING HOUR >= 9 AND HOUR <= 19

모두 작성한 SQL 문은 아래와 같다

최종 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;

post-custom-banner

0개의 댓글