运行 使用子查询求和或累积频率

running sum or cumulative frequency using subquery

下面是根据datewise输出的累积频率,我想改成子查询。输出也是正确的,但我想通过使用子查询来完成。

输出

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

您将使用 window 函数:

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 或子查询适合这个版本。