0

对于以下查询,我需要一些专业知识帮助。所以,我需要根据 GMV 金额每天进行累计计算。

我最大的问题是我无法从 GROUP BY 中删除 gmv,否则会出现一些错误。

关于如何解决这个问题的任何想法?

SELECT CONVERT(varchar, order_date, 103) AS date,
       DATEPART(WEEKDAY, order_date) AS weekday,
       SUM(gmv) OVER (ORDER BY order_date ROWS UNBOUNDED PRECEDING) AS cumulative
FROM database
WHERE order_date BETWEEN '2017-02-01' AND '2017-08-01'
GROUP BY order_date,
         gmv;
4

1 回答 1

3

正如我在评论中提到的,首先使用派生表来获取组中的聚合,然后执行累积SUM

WITH CTE AS
    (SELECT CONVERT(date, order_date) AS OrderDate, --I assume here that Order_date is a date and time value
            SUM(GMV) AS GMV
     FROM dbo.Raw_data
     GROUP BY CONVERT(date, order_date))
SELECT OrderDate,
       DATEPART(WEEKDAY, OrderDate) AS WeekDay,
       SUM(GMV) OVER (ORDER BY OrderDate ASC
                      ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumulativeGMV
FROM CTE;
于 2022-02-03T13:49:16.647 回答