inblog logo
|
An's Blog
    코딩테스트SQL

    [코딩테스트] 43. 입양 시각 구하기(2)

    윤설안's avatar
    윤설안
    May 07, 2025
    [코딩테스트] 43. 입양 시각 구하기(2)
    Contents
    테이블 index문제예시풀이

    테이블 index

    📌

    ANIMAL_OUTS 

    NAME
    TYPE
    NULLABLE
    ANIMAL_ID
    VARCHAR(N)
    FALSE
    ANIMAL_TYPE
    VARCHAR(N)
    FALSE
    DATETIME
    DATETIME
    FALSE
    NAME
    VARCHAR(N)
    TRUE
    SEX_UPON_OUTCOME
    VARCHAR(N)
    FALSE

    문제

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

    예시

    notion image

    풀이

    ❗
    처음에는 시간별로 group by를 사용하여 count를 사용하는 간단한 문제 인줄 알았다. 하지만 계속 문제가 오답이라고 하여서 찾아보았다.
    SELECT hour(DATETIME) HOUR, count(*) COUNT from ANIMAL_OUTS group by hour(DATETIME) order by hour(DATETIME)
    해당 문제는 데이터가 없는 시간대도 0이 나오게 해야하는 문제였다. 처음에는 챗GPT에게 물어봤다. 하지만 먼가 이상한 느낌이 들어서 다른 사람들의 풀이를 찾아보았다. 거기서 SQL에서 변수를 사용하는 것을 찾았고, hour이라는 변수를 줘서 +1씩 하여 23까지만 출력을 하였고, subQuery를 이용하여 count까지 뽑은 것이였다.
    set@hour = -1; select (@hour := @hour + 1) hour, (SELECT count(hour(DATETIME)) from ANIMAL_OUTS where Hour(datetime)=@hour) count from ANIMAL_OUTS where @hour < 23;
    notion image
    notion image
    Share article
    Contents
    테이블 index문제예시풀이

    An's Blog

    RSS·Powered by Inblog