문제 링크
문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME,SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
테이블
문제 결과
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
접근 방법
- SQL 문의 조회 명령어 SELECT문에서 DATETIME에 시간과 개수를 출력해야 한다.
- COUNT문을 사용하였으며 결과는 COUNT,HOUR로 출력되어 AS문도 사용하였습니다.
- DATETIME을 시간으로 바꾸고 그룹으로 묶어야 하기 때문에 GROUP BY hour(DATETIME)을 사용하였습니다.
- HAVING은 그룹으로 묶인 결과에 조건을 주는 명령어로 09시부터 19시에 속한 값들을 출력해야 하기 때문에 HOUR>=9 AND HOUR<=19를 해주었습니다.
- 마지막으로 결과를 시간순으로 조회하라는 조건이 있으므로 HOUR을 오름차순으로 정렬(ORDER BY) 하였습니다.
※ 처음 문제를 접근하였을 때에는 DATE_FORMAT(DATETIME,"%H")으로 DATETIME을 HOUR형식으로 변경하여 정답을 작성하였는데 hour()이라는 알게되어서 hour을 사용하는 방식으로 답을 수정하였습니다. DATE_FORMAT을 써도 동일한 답이 나옵니다.!
결과 코드
SELECT hour(DATETIME) as HOUR, COUNT(hour(DATETIME)) as COUNT FROM ANIMAL_OUTS GROUP BY hour(DATETIME) HAVING HOUR>=9 AND HOUR<=19 ORDER BY HOUR;
'Mysql' 카테고리의 다른 글
프로그래머스 SQL 고득점 Kit (IS NULL) 이름이 없는 동물의 아이디 (0) | 2021.11.08 |
---|---|
프로그래머스 SQL 고득점 Kit (GROUP BY) 입양 시각 구하기(2) (0) | 2021.11.08 |
프로그래머스 SQL 고득점 Kit (GROUP BY) 동명 동물 수 찾기 (0) | 2021.11.05 |
프로그래머스 SQL 고득점 Kit (GROUP BY) 고양이와 개는 몇 마리 있을까 (0) | 2021.11.05 |
프로그래머스 SQL 고득점 Kit (SUM,MAX,MIN) 중복 제거하기 (0) | 2021.11.05 |
댓글