반응형
해설 : DATETIME을 보면 "0000-00-00 00:00:00" 형식을 지키고 있다. 여기서 HOUR 함수를 이용하면 쉽게 "시" 만 추출할 수 있다. 그리고 테이블의 레코드 수는 COUNT 함수로 구할 수 있다.
시간대 별 입양 건 수를 구하는 것이 목적이므로, 그룹핑은 시간대가 기준이 되어야 한다.
그리고 이 테이블에서 시간대는 9시부터 19시로 딱 맞아 떨어지지 않기 때문에 HOUR이 9~19 인 레코드만 나오도록 조건 지정을 해줘야 한다. 마지막으로, 시간대 순으로 정렬해주면 문제에서 원하는 결과가 나온다.
SELECT HOUR(DATETIME) HOUR, COUNT(*) COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);
* SELECT문에서 HOUR(DATETIME)를 HOUR로, COUNT(*) COUNT로 조회할 수 있게 별명을 지정했다.
SELECT : 조회하라
HOUR(DATETIME) HOUR, COUNT(*) COUNT : DATETIME 필드값의 HOUR 부분과 레코드의 개수를 (단, 조회 시 필드명이 각각 HOUR, COUNT로 보이도록 함)
FROM ANIMAL_OUTS : ANIMAL_OUTS 테이블에서
WHERE HOUR(DATETIME) BETWEEN 9 AND 19 : DATETIME 필드값의 HOUR 부분이 9이상 19이하일 때
GROUP BY HOUR(DATETIME) : DATETIME 필드값의 HOUR 부분을 기준으로 그룹을 지어
ORDER BY HOUR(DATETIME) : DATETIME 필드값의 HOUR 부분을 기준으로 오름차순 하여
반응형
'DB > SQL Problems' 카테고리의 다른 글
[SQL-SUM,MAX,MIN, 난이도 하] 최솟값 구하기 (0) | 2020.12.08 |
---|---|
[SQL-GROUP BY, 난이도 중상] 입양 시각 구하기(2) (0) | 2020.12.07 |
[SQL-JOIN, 난이도 중하] 없어진 기록 찾기 (0) | 2020.12.07 |
[SQL-JOIN, 난이도 중하] 있었는데요 없었습니다 (0) | 2020.12.07 |
[SQL-JOIN, 난이도 중] 오랜 기간 보호한 동물(1) (0) | 2020.12.07 |
댓글