何时一起使用“未绑定的前缀和当前行”与仅“未绑定的前缀”一起使用

时间:2019-04-09 19:28:26

标签: sql window-functions

我正在运行一个旧的同事查询,并且在查询中使用了“未绑定先行和当前行之间的行”。我很好奇什么时候该单独使用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

1 个答案:

答案 0 :(得分:0)

他们做同样的事情。 ROWS UNBOUNDED PRECEDING的默认设置是将窗口扩展到当前行。

我总是使用BETWEEN,只是因为那是我第一次学习窗口函数时所学的。两者都可以接受,我看不到ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW的优势。