SQL/문제풀이

[프로그래머스] 입양 시각 구하기 (1)

응엉잉 2023. 12. 26. 23:00

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

 

프로그래머스

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

programmers.co.kr

 

[1차코드]

DATETIME에서 시간을 가져오고, 시간에 따른 입양 수를 세야하므로 GROUP BY와 COUNT를 함께 사용해야 할것같았음

SELECT HOUR(datetime) AS hour,
    COUNT(*) AS count
FROM animal_outs
GROUP BY hour
ORDER BY hour

 

근데 틀렸다 ... 왜지 ???

왜냐하면 문제를 똑바로 읽지 않았기 때문이다 !!!

09:00 ~ 19:59 사이에 발생한 입양 건수에 대해서만 데이터를 뽑아야 한다

 

GROUP BY를 이용해 데이터를 집계해둔 상태이기 때문에, 데이터를 필터링하기 위해선 HAVING 함수를 사용해야 한다.

GROUP BY절 바로 다음에 HAVING 절이 나와줘야 한다.

ORDER BY를 가장 마지막에 사용해야 한다.

SELECT HOUR(datetime) AS hour,
    COUNT(*) AS count
FROM animal_outs
GROUP BY hour
HAVING hour < 20
    AND hour >= 9
ORDER BY hour