프로그래머스/SQL 고득점 Kit
[프로그래머스/SQL] 입양 시각 구하기(1) (feat. GROUP BY, DATETIME변환)
개발자_조이킴
2022. 3. 9. 12:11
Problem. 입양 시각 구하기(1)
Link.
https://programmers.co.kr/learn/courses/30/lessons/59412
코딩테스트 연습 - 입양 시각 구하기(1)
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물
programmers.co.kr
Description.
ANIMAL_OUTS 테이블은 동물 보호소에 입양을 보낸 동물의 정보를 담은 테이블입니다.
ANIMAL_OUTS 테이블 구조는 다음과 같습니다.
- ANIMAL_ID: 동물의 아이디
- ANIMAL_TYPE: 생물 종
- DATETIME: 입양일
- NAME: 이름
- SEX_UPON_INTAKE: 성별 및 중성화 여부
09:00 ~ 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요.
※ 결과는 시간대 순으로 정렬합니다.
Key Point.
GROUP BY는 데이터를 특정 컬럼을 기준으로 그룹화하는 명렁어이다.
일반적으로 GROUP BY는 유형별로 개수를 알고 싶을 때 사용되며, 이때 COUNT와 함께 사용된다.
DATETIME 타입은 데이터타입 중 하나로 YYYY-MM-DD hh:mm:ss의 형식을 가진다.
문제처럼 시간(hh)만을 필요하는 경우가 있다면 어떻게 해야할까?
아래 예시처럼 DATETIME 타입은 사용자가 원하는 유형으로 변경할 수 있다.
본 문제에서는 시간 데이터만 필요하기 때문에 HOUR(DATETIME)을 사용해 시간에 해당하는 정보만 추출해 사용했다.
- YEAR(DATETIME): 년 정보만 추출, 예) 2022-03-09 13:10:00 → 2022
- MONTH(DATETIME): 월 정보만 추출, 예) 2022-03-09 13:10:00 → 3
- DAY(DATETIME): 일 정보만 추출, 예) 2022-03-09 13:10:00 → 9
- HOUR(DATETIME): 시간 정보만 추출, 예) 2022-03-09 13:10:00 → 13
- MINUTE(DATETIME): 분 정보만 추출, 예) 2022-03-09 13:10:00 → 10
- SECOND(DATETIME): 초 정보만 추출, 예) 2022-03-09 13:10:00 → 0
My Answer.
SELECT HOUR(DATETIME), COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9
AND HOUR(DATETIME) < 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME) ASC