본문 바로가기
갭알 ☠️/SQL

[프로그래머스/SQL] 입양 시각 구하기(1) (MySQL, Oracle)

by Niyaoh 2022. 8. 8.

https://school.programmers.co.kr/learn/courses/30/lessons/59412

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

ANIMAL_OUTS 테이블

NAME TYPE NULLABLE INFO
ANIMAL_ID VARCHAR(N) FALSE 아이디
ANIMAL_TYPE VARCHAR(N) FALSE 종류
DATETIME DATETIME FALSE 보호 시작일
NAME VARCHAR(N) TRUE 이름
SEX_UPON_INTAKE VARHCAR(N) FALSE 성별 및 중성화 여부

 

[문제] 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.
09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

 

 

▼ 해석 및 풀이

MySQL

/*
[테이블] : ANIMAL_OUTS
[컬럼명] : DATETIME(열 이름 'HOUR'), 열 이름 'COUNT'
[조건] : DATETIME을 시간대 별로 자른 뒤 9시 ~ 19시까지의 데이터 개수가 몇 개인지 조회. 단, DATETIME 기준 ASC 정렬.

HOUR(컬럼명) : 해당 컬럼의 시간을 추출
*/

SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 and HOUR <= 19
ORDER BY HOUR(DATETIME) ASC;

Oracle

/*
TO_CHAR(컬럼명, '형식') : 해당 컬럼을 형식(HH24 : 24시간)에 맞게 추출
*/

SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR, COUNT(*) AS COUNT FROM ANIMAL_OUTS
WHERE TO_CHAR(DATETIME, 'HH24') BETWEEN 09 AND 19
GROUP BY TO_CHAR(DATETIME, 'HH24')
ORDER BY TO_CHAR(DATETIME, 'HH24');

댓글