我正在运行一个旧的同事查询,并且在查询中使用了“未绑定先行和当前行之间的行”。我很好奇什么时候该单独使用UNBOUNDED PRECEDING还是上面写的
我尝试了两种方法,但得到的结果相同,但仅对数据的一部分进行了尝试。我担心如果更新代码会丢失一些东西,所以我想对这些概念有一个清晰的了解
例如
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
vs。
SELECT *
, sum(pct) OVER(
PARTITION BY id, id2, zip
ORDER BY amount desc ROWS UNBOUNDED PRECEDING
) AS cumulative_pct
FROM #a
答案 0 :(得分:0)
他们做同样的事情。 ROWS UNBOUNDED PRECEDING
的默认设置是将窗口扩展到当前行。
我总是使用BETWEEN
,只是因为那是我第一次学习窗口函数时所学的。两者都可以接受,我看不到ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
的优势。