SELECT HOUR(DATETIME) as HOUR, COUNT(ANIMAL_ID)COUNT
FROM ANIMAL_OUTS
WHERE 1=1
and HOUR(DATETIME) between 09 and 19
GROUP BY 1
ORDER BY 1
ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냄
문제
09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성후 결과는 시간대 순으로 정렬
DATETIME 은 년 월 일 시간 분 초 까지 다 나와 있는 데이터로 포멧을 바꾸어 주어야 한다. 여기엔 적어두지 않았지만 답안 예시에는 시간이 9 10 11 ~ 식으로 시간만 나와 있는 데이터값으로 추출을 요구하였다. 따라서 HOUR 함수로 시간만 뽑아서 처리해야 하는데 SELECT 문에서도 한번 처리해주고 WHERE 조건에서도 각각 처리해 주었다. SELECT에서 처리해 준 이유는 당연히 처리된 결과값에 시간만 표기하기를 원하기 때문에 처리 해야하는 부분이고 WHERE 조건에서 처리한 이유는 시간을 기준으로 몇건이나 무엇을 했는가를 요구 했기 때문에 필터링을 위해서 간편화 시킨 것 이다. 따라서 9시부터 19:59 까지 이므로 사실상 09 - 19 와 마찬가지로 between 처리 해주었다.
결과에 입양 건수를 요청했으니 입양 된 대상은 동물로 동물을 나타내는 유니크 값인 ANIMAL_ID를 사용하여 COUNT 처리를 해주고 기준은 시간이라 GROUP BY를 시간 기준으로 하여 시간순으로 정렬 후 마무리 하였다.
생각보다 조금 귀찮은 문제로 한번 검토 안하면 실수 할 수 도있으니 유의가 필요할 것 같다.
'SQL > MY SQL 문제 풀이(프로그래머스)' 카테고리의 다른 글
[MYSQL] PROGRAMMERS_상품 별 오프라인 매출 구하기 (0) | 2024.02.21 |
---|---|
[MYSQL] PROGRAMMERS_자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_진료과별 총 예약 횟수 출력하기 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_고양이와 개는 몇 마리 있을까 (0) | 2024.02.21 |
[MYSQL] PROGRAMMERS_중성화 여부 파악하기 (0) | 2024.02.21 |