下面是按日期累计频率的输出,我想将其改为子查询。输出也是正确的,但我想通过使用子查询来实现。
输出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或子查询。