MySQL
[SQL 문제풀이] 입양 시각 구하기(1)-프로그래머스
illho
2023. 5. 22. 16:49
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/59412#qna
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
풀이
09:00 부터 19:59까지의 조건이 있으니 WHERE 조건문에 BETWEEN을 써서 09시부터 19시 까지 데이터를 찾는다.
각 시간대별로 입양 건수를 찾기위해 GROUP BY 를 사용하고 DATE_FORMAT으로 시간만 나오게 해서 구한다.
문자같은경우 10 이하는 숫자앞에 0이 붙기때문에 CAST 를 써서 숫자로 변환하였다. 마지막으로 시간대 순으로 정렬 한다.
쿼리
SELECT
CAST(DATE_FORMAT(DATETIME,'%H') AS UNSIGNED) AS HOUR,
COUNT(1) AS COUNT
FROM
ANIMAL_OUTS
WHERE
DATE_FORMAT(DATETIME,'%H') BETWEEN '09' AND '19'
GROUP BY DATE_FORMAT(DATETIME,'%H')
ORDER BY DATE_FORMAT(DATETIME,'%H')
;
MySQL에 시간을 구할때 굳이 DATE_FORMAT을 쓰지않고 HOUR(DATETIME) 라는 함수가 있다는 것을 알게 됐다.
그래서 더 간단하게 쿼리를 작성할 수 있다.
SELECT
HOUR(DATETIME) AS HOUR,
COUNT(1) AS COUNT
FROM
ANIMAL_OUTS
WHERE
HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
;