【问题标题】:When to use "UNBOUNDED PRECEDING AND CURRENT ROW" together vs. just "UNBOUNDED PRECEDING"何时一起使用“UNBOUNDED PRECEDING AND CURRENT ROW”与仅使用“UNBOUNDED PRECEDING”
【发布时间】:2019-08-31 04:02:48
【问题描述】:

我正在运行旧同事查询,查询中使用了 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW。我很好奇什么时候只使用 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

对比

SELECT *
  , sum(pct) OVER(
    PARTITION BY id, id2, zip 
    ORDER BY amount desc ROWS  UNBOUNDED PRECEDING 
  ) AS cumulative_pct
FROM #a

【问题讨论】:

    标签: sql window-functions


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 2021-02-03
      • 2019-10-09
      • 2015-08-31
      • 2017-03-22
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      相关资源
      最近更新 更多