SQL server 这个over子句在做什么

SQL server what is this over clause doing

我继承了以下查询,但不确定选择的第二个值是什么。

任何人都可以解释一下吗?

抱歉,如果问题含糊不清,但我已经提供了尽可能多的细节。

SELECT
dateId,
row_number() OVER (order by DATEPART(ISO_WEEK, min(myDate)) % 2, myDateId-1) AS DayIdx 
FROM table
WHERE masterID=9084141 GROUP BY dateId

OVER 子句定义查询结果集中的 window 或用户指定的行集。 MSDN link:- https://msdn.microsoft.com/en-us/library/ms189461.aspx

它有两个重要论点:

Partition By : 将分区设置得非常像分组依据,以便您在其上应用函数。

Order BY : 设置结果集的顺序

您可以将它与 RANKING 函数一起使用,就像在您的查询中一样 或者您也可以使用 aggregation 函数。 聚合函数的使用示例:

select 
customerID
, productID
, sum(orderAmount) OVER (Partition by CustomerID) as Total 
from Orders

row_number() 是一个排名函数,用于获取部分数据中的顺序值。 DatePart 将 return 从最小值到最大值的周数。在此查询中,所有具有相同周数的值将按序列号或 row_number.

对齐