일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- BFS
- Java
- 백준
- 코딩테스트
- union find
- 크루스칼
- 배포
- 다익스트라
- Pirogramming
- 그래프 탐색
- AWS
- MST
- 프림
- SQL
- 최단경로
- django
- db
- GROUPBY
- 구현
- 자바
- Baekjoon
- Database
- OrderBy
- 누적합
- 프로그래머스
- 피로그래밍
- 알고리즘
- SQL코딩테스트
- EC2
- JOIN
Archives
- Today
- Total
NullNull
프로그래머스 SQL 입양 시각 구하기(1) 본문
Data 구조
ANIMAL_OUTS : 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
문제
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
예시
Output:
HOUR | COUNT |
9 | 1 |
10 | 2 |
11 | 13 |
12 | 10 |
13 | 14 |
14 | 9 |
15 | 7 |
16 | 10 |
17 | 12 |
18 | 16 |
19 | 2 |
정답:
DATETIME 타입에서 시간을 추출할 때 사용하는 HOUR 함수를 알고 있다면 쉽게 풀이할 수 있는 문제입니다.
HOUR(DATETIME)을 한다면 해당 데이터의 시간만 추출할 수 있습니다.
HOUR 뿐만 아니라 YEAR, MONTH, DAY, MINUTE, SECOND 를 사용해서 각 DATETIME 데이터의 년, 월, 일, 분, 초를 얻어오는 것도 가능합니다.
따라서 우선 HOUR 함수를 이용해서 각 데이터들의 시간만을 추출한 뒤에 이를 그룹화 한 뒤에 집계하여 시간대별 입양 횟수를 조회합니다. 이후에 HAVING 절에서 09:00 부터 19:59 사이의 시간만 가능하도록, HOUR 중 9 이상 20 미만의 값만 조회합니다.
마지막으로 시간 순서대로 정렬하면 완료입니다.
SELECT HOUR(DATETIME) HOUR, COUNT(*) COUNT FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR < 20
ORDER BY HOUR
'SQL' 카테고리의 다른 글
프로그래머스 SQL 이름이 있는 동물의 아이디 (0) | 2022.02.28 |
---|---|
프로그래머스 SQL 이름이 없는 동물의 아이디 (0) | 2022.02.28 |
프로그래머스 SQL 입양시각 구하기(2) (0) | 2022.02.28 |
프로그래머스 SQL 동명 동물 수 찾기 (0) | 2022.02.28 |
프로그래머스 SQL 고양이와 개는 몇 마리 있을까? (0) | 2022.02.28 |
Comments