【问题标题】:running sum or cumulative frequency using subquery使用子查询运行总和或累积频率
【发布时间】:2021-05-13 01:34:41
【问题描述】:

下面是根据日期的累积频率的输出,我想将其更改为子查询。输出也是正确的,但我想通过使用子查询来做到这一点。

输出

orderdate    totalsum   sum  
1996-07-04      27      27
1996-07-05      49      76
1996-07-08      101     177
1996-07-09      105     282
1996-07-10      102     384
1996-07-11      57      441

【问题讨论】:

  • 请分享示例输入数据。

标签: mysql sql postgresql oracle common-table-expression


【解决方案1】:

你会使用窗口函数:

SELECT o.orderdate, SUM(od.quantity) AS totalsum,
       SUM(SUM(od.quantity)) OVER (ORDER BY o.orderdate) as runningsum
FROM orders o JOIN
     orderdetails od
     ON o.orderid = od.orderid
GROUP BY o.orderdate;

这不仅写起来更简单,而且应该更快——而且没有 CTE 或子查询适合这个版本。

【讨论】:

    猜你喜欢
    • 2011-06-08
    • 2012-10-16
    • 1970-01-01
    • 2012-02-11
    • 2012-09-24
    • 2010-09-15
    • 2017-09-16
    • 1970-01-01
    • 2021-01-18
    相关资源
    最近更新 更多