SQL窗口函数:分组、排名、偏移与统计的全面解析
1. 分组与累计计算
在处理数据时,有时需要对特定客户和日期的记录进行分组,并计算累计值。例如,客户 10 在 2014 年 1 月 10 日下了两笔订单,为了确保每个客户和日期组合只返回一行,并计算该客户在当年截至该日期的累计值(YTD),可以使用以下查询:
SELECT custid, orderdate,
SUM(SUM(val)) OVER(PARTITION BY custid, YEAR(orderdate)
ORDER BY orderdate
ROWS UNBOUNDED PRECEDING) AS YTD_val
FROM dbo.OrderValues
GROUP BY custid, orderdate;
这个查询的执行步骤如下:
1. 首先,使用 GROUP BY 子句按 custid 和 orderdate 对 dbo.OrderValues 表中的行进行分组。
2. 然后,使用 SUM(SUM(val)) 结合 OVER 子句进行累计计算。 PARTITION BY custid, YEAR(orderdate) 按客户和年份进行分区, ORDER BY orderdate 按订单日期排序
超级会员免费看
订阅专栏 解锁全文
786

被折叠的 条评论
为什么被折叠?



