如何在 SQL 中使用 group by 运行 sum?

Posted

技术标签:

【中文标题】如何在 SQL 中使用 group by 运行 sum?【英文标题】:How to do running sum with group by in SQL? 【发布时间】: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功能,但数字不正确,任务有点匆忙,所以我跳过了我自己做的试验并尝试在发现潜在错误之前尽快解决它。但我明白你的意思 【参考方案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;

【讨论】:

以上是关于如何在 SQL 中使用 group by 运行 sum?的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql中group by week

如何在表格中模拟SQL group by?

如何在没有算术计数的SQL子查询中使用GROUP BY

如何在 T-SQL 中使用 group by 和 union

SQL:在 GROUP BY 中使用 SELECT 中的别名

如何在 Laravel 中禁用 only_full_group_by 选项