CodingSpace

[프로그래머스/SQL] 입양 시각 구하기(1) (feat. GROUP BY, DATETIME변환) 본문

프로그래머스/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문을 작성해주세요.

※ 결과는 시간대 순으로 정렬합니다.

 

예) 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

 

Comments