使用子查询运行总和或累计频率



下面是按日期累计频率的输出,我想将其改为子查询。输出也是正确的,但我想通过使用子查询来实现。

输出
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

您可以使用窗口函数:

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或子查询。

相关内容

  • 没有找到相关文章

最新更新