관리 메뉴

ballqs 님의 블로그

[SQL] 입양 시각 구하기(2) 문제 본문

코딩 공부/DB

[SQL] 입양 시각 구하기(2) 문제

ballqs 2024. 8. 12. 09:35

프로그래머스 SQL 문제 : 입양 시각 구하기(2)


테이블 명 : ANIMAL_OUTS

NAME TYPE NULLABLE COMMENT
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문을 작성!

 

코드

# WITH문으로 작성하여 시간을 만들어 놓고 ANIMAL_OUTS 테이블과 LEFT JOIN
WITH RECURSIVE HOURS AS (
    SELECT 0 AS HOUR
    UNION ALL
    SELECT HOUR + 1 FROM HOURS WHERE HOUR < 23
)
SELECT H.HOUR, COALESCE(COUNT(AO.DATETIME), 0) AS COUNT
FROM HOURS H
LEFT JOIN ANIMAL_OUTS AO ON DATE_FORMAT(AO.DATETIME, "%H") = LPAD(H.HOUR, 2, '0')
GROUP BY H.HOUR
ORDER BY H.HOUR ASC;

마무리

WITH문을 사용해서 하는 방법은 내가 생각지도 못한 방법이다. 그래서 기록하기 위해 작성했다. 잊지 않기 위해 이런식으로 사용할수도 있구나 라는걸 알기 위해!

'코딩 공부 > DB' 카테고리의 다른 글

[DB] 격리수준(Isolation)  (0) 2024.10.10
[DB] 키의 종류  (0) 2024.09.16