참고로 프로그래머스 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 짜는걸 접해야겠다!

 

끝!

+ Recent posts