입양 시각 구하기(1)
문제 설명
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.
NAMETYPENULLABLEANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) BETWEEN 9 AND 19
GROUP BY EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP))
ORDER BY HOUR;
DATETIME은 DATE와 TIMESTAMP가 합쳐진 자료형으로, 시,분,초를 EXTRACT를 할 때는 CAST로 TIMESTAMP로 바꿔주어야 하고, 연 월 일을 할 때는 DATE로 바꿔주어야 한다.
SELECT TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE TO_NUMBER(TO_CHAR(DATETIME, 'HH24')) BETWEEN 9 AND 19
GROUP BY TO_NUMBER(TO_CHAR(DATETIME, 'HH24'))
ORDER BY HOUR
그냥 TO_CHAR만 하면 09로 나와서 9로 바꿔주기 위해 TO_NUMBER를 한다.
728x90
'SQL 문제 풀이' 카테고리의 다른 글
[프로그래머스] Lv1. 경기도에 위치한 식품창고 목록 출력하기 Oracle (0) | 2024.03.10 |
---|---|
[프로그래머스] Lv2. 진료과별 총 예약 횟수 출력하기 (0) | 2024.02.27 |
[프로그래머스] Lv2. 동명 동물 수 찾기 Oracle (0) | 2024.02.27 |
[프로그래머스] Lv2. 중복제거하기 Oracle (0) | 2024.02.27 |
[프로그래머스] Lv3. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 Oracle (0) | 2024.02.24 |