mysql 문제풀이/easy

1321. Restaurant Growth

gooreumsea 2024. 1. 15. 23:37

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

'mysql 문제풀이 > 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