참고로 프로그래머스 SQL 문제 수준은 하 정도로 쉽다.
프로그래머스 SQL 문제 다푸는데 일주일도 안 걸릴정도..
이 문제가 레벨 4임.
SQL 문제를 더 공부하고 싶다면 HackerRank 사이트를 추천한다.
문제 설명
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.
0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요.
이때 결과는 시간대 순으로 정렬해야 합니다.
예시
SQL문을 실행하면 다음과 같이 나와야 합니다.
HOUR | COUNT |
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 3 |
8 | 1 |
9 | 1 |
10 | 2 |
11 | 13 |
12 | 10 |
13 | 14 |
14 | 9 |
15 | 7 |
16 | 10 |
17 | 12 |
18 | 16 |
19 | 2 |
20 | 0 |
21 | 0 |
22 | 0 |
23 | 0 |
SQL 풀이 ( Mysql)
SELECT A.HOUR, nvl(COUNT,0) as COUNT
FROM
(
SELECT LEVEL-1 AS HOUR
FROM DUAL
CONNECT BY LEVEL <= ((24)/1)
)
A LEFT OUTER JOIN
(
SELECT
COUNT(*) as COUNT
,TO_CHAR(DATETIME,'HH24') as HOUR
FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME,'HH24')
) B
ON (A.HOUR = B.HOUR)
ORDER BY A.HOUR;
SQL이 확실히 재미땅..
SQLD 딴지 어언 1년이니.. SQLP 준비도 슬슬 해야겠다.
예전엔 DBA해보고 싶다는 생각들 정도로 많이 접하고 생각한대로 결과 쿼리 나오거나 성능개선 되면 재밌었는데
DB 건들일 일이 없으니 재미가 없다. 그리고 점점 까먹는다.. 망할 기억력.
개인프로젝트로 꾸준히 SQL 짜는걸 접해야겠다!
끝!
'Backend > Algorithm' 카테고리의 다른 글
[프로그래머스-MySQL] 우유와 요거트가 담긴 장바구니 풀이 (0) | 2021.03.24 |
---|---|
JAVA 프로그래머스 문제 풀이, 올바른 괄호 (0) | 2021.03.06 |
JAVA 카카오 코딩테스트 문제 풀이, 튜플 (0) | 2021.03.06 |
JAVA 카카오 코딩테스트 문제 풀이, 키패드 누르기 (0) | 2021.03.06 |
JAVA 카카오 코딩테스트 문제 풀이, 다트 게임 (0) | 2021.03.06 |