리트코드 [Restaurant Growths]

윤태영·2024년 9월 3일
0

문제

https://leetcode.com/problems/restaurant-growth/description/

  • '6일전 까지'를 기준으로 누적합과 이동평균을 구하자.

  • 7일 동안(즉, 현재 + 6일 전) 고객이 지불한 금액의 이동 평균을 계산

  • 이동 평균은 소수점 둘째자리까지 반올림 하자.

Table : Customer

Example1

문제풀이

  1. 첫 번째 CTE(CTE)를 기반으로 이동 합계(moving sum) 및 이동 평균(moving average)을 계산

  2. ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW: 현재 행을 포함한 이전 6개의 행을 기준으로 합계와 평균을 계산

  3. visited_on 날짜에 대해 7번째 행부터 결과를 반환합니다. 이는 처음 6개 행을 건너뛰고, 이전 6개 날짜의 데이터가 모두 채워진 행들만을 반환

쿼리

WITH CTE AS(
    SELECT visited_on, sum(amount) AS amount
    FROM Customer
    GROUP BY visited_on
), CTE2 AS(
    SELECT visited_on,
           sum(amount) OVER (ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS amount,
           ROUND(AVG(amount) OVER (ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW),2) AS average_amount,
           ROW_NUMBER() OVER (ORDER BY visited_on) AS RN
    FROM CTE
)

SELECT visited_on, amount, average_amount
FROM CTE2
WHERE RN >6
profile
ice blue

0개의 댓글