Sql 有人能解释一下吗

Sql 有人能解释一下吗,sql,sql-server,database,sql-server-2005,tsql,Sql,Sql Server,Database,Sql Server 2005,Tsql,我借用了一个查询,并根据自己的目的对其进行了修改,但当我不完全确定它在做什么时,我不喜欢这样做。SQL文档在此子句中的描述不足。这是我借用和修改的,你能告诉我它基本上在做什么吗 (SELECT Id FROM ( SELECT Id ,RANK() OVER ( PARTITION BY DropStatusId ORDER BY StatusDate DESC) [Rank] FROM

我借用了一个查询,并根据自己的目的对其进行了修改,但当我不完全确定它在做什么时,我不喜欢这样做。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
)
阅读,这是非常直截了当的。
“归功于Jeff Smith”

子句中的
OVER
表示您正在使用分析(而不是聚合)。根据:

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

与聚合不同,分析不需要定义
分组依据。

到目前为止答案都很好。
有时,一个直观的例子有助于:

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 StatusDate排名
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的记录。

+1表示“当我不完全确定它在做什么时,不喜欢这样做”