ballqs 님의 블로그
[SQL] 입양 시각 구하기(2) 문제 본문
프로그래머스 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 |