■ 사용 문법
WITH RECURSIVE
■ 사용 방법
아무 생각없이 HOUR로 그룹핑을 해주고 COUNT를 제출했는데, 틀렸다. 문제를 다시보니 0건 이더라도 0시부터 23시까지 다 나와야 한다. 그래서 재귀를 이용해서 풀었다.
1) WITH RECURSIVE 로 임시 테이블 만들기
WITH RECURSIVE cte_name AS (
-- Anchor member
initial_query
UNION ALL
-- Recursive member
recursive_query
)
SELECT * FROM cte_name;
#cte_name: CTE(Common Table Expression)의 이름입니다.
#initial_query: 재귀가 시작되는 기본 쿼리(앵커 멤버)입니다.
#recursive_query: 재귀적으로 호출되는 쿼리입니다. cte_name을 참조하여 반복적으로 실행됩니다.
2) 임시테이블과 ANIMAL_OUTS 테이블을 LEFT JOIN을 해준다.
3) HOUR로 GROUP BY를 해준다.
4) COUNT로 HOUR 별 입양횟수를 구해준다.
■ 코드
with recursive ANIMAL_OUTS_PEAK_TIME AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR+1 FROM ANIMAL_OUTS_PEAK_TIME
WHERE HOUR < 23
)
SELECT
ANIMAL_OUTS_PEAK_TIME.HOUR,
COUNT(HOUR(A.DATETIME))
FROM ANIMAL_OUTS_PEAK_TIME
left join ANIMAL_OUTS as A
on ANIMAL_OUTS_PEAK_TIME.HOUR = HOUR(A.DATETIME)
GROUP BY ANIMAL_OUTS_PEAK_TIME.HOUR
728x90
'개발 > SQL' 카테고리의 다른 글
프로그래머스SQL_부서별 평균 연봉 조회하기 (0) | 2024.06.24 |
---|---|
프로그래머스SQL_조건에 맞는 사원 정보 조회하기(LIMIT) (0) | 2024.06.19 |
프로그래머스SQL_년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.06.14 |
프로그래머스SQL_저자 별 카테고리 별 매출액 집계하기 (0) | 2024.06.13 |
프로그래머스SQL_식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2024.06.07 |