본문 바로가기

반응형

문제

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

구조

ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.

예시


완성한 쿼리

select
    hour,
    count
from(
    select
        to_number(to_char(datetime, 'fmhh24')) HOUR,
        count(*) COUNT
    from animal_outs
    group by to_number(to_char(datetime, 'fmhh24'))
    order by to_number(to_char(datetime, 'fmhh24'))
)
where hour >= 9 and hour < 20

이번 문제는 조금 복잡하게 풀었습니다. to_char()만 하면 1~9시가 01~09로 출력이 돼서 to_number()를 써줬으며, 그대로 조건을 넣어주기에는 코드가 너무 지저분해져서 서브쿼리를 이용했습니다.

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59412

반응형
댓글