[Programmers] (고득점KIT) GROUP BY - 입양 시각 구하기(1)

Sierra·2022년 2월 4일
0
post-thumbnail

문제 설명

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_OUTCOMEVARCHAR(N)FALSE

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

예시

SQL문을 실행하면 다음과 같이 나와야 합니다.

HOURCOUNT
91
102
1113
1210
1314
149
157
1610
1712
1816
192

Solution

SELECT HOUR(DATETIME) AS 'HOUR', COUNT(DATETIME) AS 'COUNT'
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR

HOUR 명령어를 모르면 틀릴수도 있다. 아니 DATETIME에 양식이 그렇지 않은데 어떻게 ? 라는 생각을 할 수 도 있을것이라 생각한다.
어쨌든 DATETIME을 HOUR로 처리했으니 시간별로 처리할 수 있다. 09시부터 19시에 있는 데이터를 각각 갯수대로 처리해야 하니까 HOUR(DATETIME)기준으로 GROUP BY 한다.
9시 부터 19시 까지 데이터가 필요하니까 HAVING에 HOUR >= 9 AND HOUR <= 19로 입력.

SQL문제는 참 풀이하기가 애매하다. 코드만 보면 그래 그러라는거잖아 싶기도 하고 해서...
그렇지만 확실히 모르면 헷깔리는 것 들이 있다면 저런 함수들이 있다고 할수있다.

profile
블로그 이전합니다 : https://swj-techblog.vercel.app/

0개의 댓글