【问题标题】:What does function OVER() do in MS SQL? [duplicate]MS SQL 中的 OVER() 函数有什么作用? [复制]
【发布时间】:2015-08-10 22:24:31
【问题描述】:

我目前正在阅读其他人创建的程序,但我不明白这行代码:

TotalRecordsCount = COUNT(Id) OVER().

通常人们在OVER() 中使用分区依据。 如果OVER()中不传入参数,会怎样?

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    我不认为标记为重复的问题解决了在这种特定情况下发生的情况,即在没有参数的情况下使用over(),因此尽管有重复标志,我仍会发布答案...


    对于某些窗口函数,partition 和 order by 子句是可选的; count 是其中之一,因为在没有分区的情况下将计数应用于变量是非常有意义的——计数将应用于整个集合——而像 rank 或 row_number 这样的函数如果没有某种顺序就没有任何意义。

    引用参考文档:

    如果未指定 PARTITION BY,则函数将处理 查询结果集为单个组。

    如果未指定 ORDER BY,则整个分区用于窗口 框架。这仅适用于不需要 ORDER BY 的函数 子句。

    【讨论】:

    • 感谢您的帮助!但是在这种情况下我可以删除 over() 子句吗?
    • @SimonLin 也许,但如果没有 over 子句,您需要按所有其他未聚合的引用列进行分组,这可能会改变查询的含义。所以答案是:这取决于你想要做什么。
    • 再次感谢!你解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2020-09-18
    • 2022-01-06
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多