请问OVER是什么意思?(涉及IT技术)

6

我借用了一个查询并为自己的目的进行了修改,但当我不完全确定它在做什么时,我不喜欢这样做。SQL文档对此子句的描述不足。这是我借用和修改的内容,请告诉我它基本上在做什么?

(SELECT Id FROM
    (
        SELECT 
            Id
            ,RANK() OVER ( PARTITION BY DropStatusId ORDER BY StatusDate DESC) [Rank] 
        FROM 
            [dbo].[tblLHTrackingHistory] [TempHistory]
        WHERE 
            [TempHistory].[DropStatusId] = [DropStatus].[Id]
    ) [TT1] WHERE [Rank] = 1
)

1
+1 表示“当我不完全确定它在做什么时,我不喜欢这样做”。 - mechanical_meat
3个回答

5
OVER子句表示您正在使用分析功能(而不是聚合功能)。根据OVER文档的说明:

在应用关联窗口函数之前,确定行集的分区和排序。

与聚合不同,分析不需要定义GROUP BY

3

到目前为止,回答都很好。
有时候一个视觉示例可以帮助理解:

DropStatusId  StatusDate  Rank  
1             2010-02-19  1    <
1             2010-02-18  2
1             2010-02-17  3
2             2010-02-18  1    <
2             2010-02-15  2
2             2010-02-13  3
2             2010-02-12  4

“分区”是指给定DropStatusId的记录。

2

阅读这篇文章,它很简单易懂。 感谢 Jeff Smith。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接