【问题标题】:How to do running sum with group by in SQL?如何在 SQL 中使用 group by 运行 sum?
【发布时间】:2018-06-13 12:19:47
【问题描述】:

现在我有一个如下表

    Date        Promotion campaign    Visit      Orders    Revenue
   2018-06-01    Promotion01           200         5       1000
   2018-06-01    Promotion02           250         10      1100
   2018-06-02    Promotion01           220         8       1350
   2018-06-03    Promotion03           300         15      2000  
    ...

我想生成一个显示累积数字的表格,例如

    Date         Visit        Orders       Revenue  
  2018-06-01      450           15           2100
  2018-06-02      670           23           3450
  2018-06-03      970           38           5450 

我首先知道我可能必须使用按函数分组并按日期分组数据,然后如何计算 3 列的运行总和?

dw 是亚马逊红移。非常感谢您提前提供的帮助!

【问题讨论】:

  • 这里有 2109 个使用搜索短语 [sql] running total 的现有帖子,1212 个使用搜索短语 [sql] running sum 的帖子。这些都没有给你足够的信息来至少尝试自己解决它?
  • 是的,我尝试了group by和lag功能,但数字不正确,任务有点匆忙,所以我跳过了我自己做的试验并尝试在发现潜在错误之前尽快解决它。但我明白你的意思

标签: sql group-by amazon-redshift


【解决方案1】:

您可以使用聚合和窗口函数:

select date, sum(visit) as visit, sum(orders) as orders,
       sum(revenue) as revenue,
       sum(sum(revenue)) over (order by date) as running_revenue
from t
group by date
order by date;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-01-19
    • 1970-01-01
    • 2012-06-30
    • 2017-08-08
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多