동물 보호소에서 09:00부터 19:59까지 입양이 발생한 시간을 조회하는 문제이다.
조건을 만족하도록
HOUR)COUNT)를 출력하면 된다.
또한 결과는 입양 시각을 기준으로 오름차순 정렬해야 한다.
DATETIME 컬럼은 날짜와 시간이 함께 저장되어 있으므로 시간만 추출해야 한다.
MySQL에서 HOUR() 함수를 사용하여 시간(Hour)만 가져올 수 있다.
HOUR(DATETIME)
문제에서는 09시부터 19시까지의 데이터만 조회해야 하므로 BETWEEN을 사용하여 범위를 지정한다.
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
이후 시간별 입양 건수를 구하기 위해 GROUP BY HOUR(DATETIME)을 사용한다.
각 시간의 입양 건수는 COUNT(*)로 계산하며, 마지막으로 시간 순으로 정렬하기 위해 ORDER BY HOUR를 사용한다.
현재 작성한 풀이에서 수정해야 할 부분
WHERE DATETIME IN (9, 20)
DATETIME은 날짜와 시간이 함께 저장된 데이터이므로 숫자9,20과 비교할 수 없다.또한 문제는 9시부터 19시까지를 의미하므로
IN이 아니라HOUR(DATETIME)과BETWEEN을 사용해야 한다.
HOUR(DATETIME)으로 입양 시간을 추출한다.WHERE절에서 9시부터 19시까지의 데이터만 조회한다.GROUP BY HOUR(DATETIME)으로 시간별 그룹을 만든다.COUNT(*)를 이용해 시간별 입양 건수를 계산한다.ORDER BY HOUR로 시간을 오름차순 정렬한다.SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR;
작성한 SQL
SELECT COUNT(*)
FROM ANIMAL_OUTS
WHERE DATETIME IN (9, 20)
GROUP BY DATETIME;
수정해야 할 점은 다음과 같다.
DATETIME은 날짜와 시간이 함께 저장된 컬럼이므로 IN (9, 20)으로 비교할 수 없다.HOUR(DATETIME)을 사용해야 한다.BETWEEN 9 AND 19를 사용해야 한다.HOUR 컬럼을 함께 조회해야 한다.GROUP BY DATETIME이 아니라 GROUP BY HOUR(DATETIME)으로 시간별 집계를 해야 한다.ORDER BY HOUR를 추가하여 시간순으로 정렬해야 한다.