我正在运行一个旧的同事查询,并且在查询中使用了ROWS BETWEEN UNBOUNDED PRECEDING和CURRENT ROW。我很好奇何时只使用UNBOUNDED PRECEDING本身或者像上面那样写
我尝试了两种方法,但得到了相同的结果,但我只在数据的一个子集上尝试过。如果我更新代码,我担心我可能会遗漏一些东西,所以我希望能够清楚地理解这些概念
E.g
SELECT *
, sum(pct) OVER(
PARTITION BY id, id2, zip
ORDER BY amount desc
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS cumulative_pct
FROM #a
与
SELECT *
, sum(pct) OVER(
PARTITION BY id, id2, zip
ORDER BY amount desc ROWS UNBOUNDED PRECEDING
) AS cumulative_pct
FROM #a
他们做同样的事情。 ROWS UNBOUNDED PRECEDING
的默认设置是将窗口扩展到当前行。
我总是使用BETWEEN
,因为这是我第一次学习窗口函数时学到的东西。两者都是可以接受的,我没有看到ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
的优势。