https://leetcode.com/problems/restaurant-growth/description/
WITH문을 2번 중첩하여 문제를 풀이했었고,
내 풀이만 다른 분들과 달랐기에, 해결과정이 기억에 많이 남았던 문제 중 하나였다.
지금은 단순 풀이를 위한 쿼리작성이지만, 나중에는 쿼리 최적화 관점에서도 작성해보면 좋을 것 같다.
✅ 쿼리 최적화 첫걸음 — 보다 빠른 쿼리를 위한 7가지 체크 리스트
DB에 대한 데이터 분석가의 에티켓
medium.com
1321. Restaurant Growth -> 이전 6일 ~ 당일 amount 합산
# 방문일별 계산
WITH grouped_visit_on AS
(
SELECT visited_on
, SUM(amount) AS amount
FROM Customer
GROUP BY visited_on
)
, visit_7 AS
(
# 방문일별 이전 6일 ~ 0일 까지 합산 및 AVG 계산, Named window
SELECT visited_on
, SUM(amount) OVER (ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND 0 FOLLOWING) AS amount
, ROUND(AVG(amount) OVER (ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND 0 FOLLOWING),2) AS average_amount
FROM grouped_visit_on
)
# 최초 구매일로부터 6일 이후의 값들만 출력 == 1월 7일 부터
SELECT visited_on
, amount
, average_amount
FROM visit_7
WHERE visited_on >= (SELECT DATE_ADD(MIN(visited_on), INTERVAL 6 DAY) FROM customer)
# 1월 7일 -> WHERE 조건절 서브쿼리 삽입
#SELECT DATE_ADD(MIN(visited_on), INTERVAL 6 DAY
'sql > easy' 카테고리의 다른 글
550. Game Play Analysis IV (0) | 2024.05.29 |
---|---|
511. Game Play Analysis I (0) | 2024.03.30 |
180. Consecutive Numbers (0) | 2024.01.15 |
Leetcode 185 - Department Top Three Salaries (0) | 2023.09.20 |
Leetcode 262 - Trips and Users (0) | 2023.09.01 |