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.
对齐
我继承了以下查询,但不确定选择的第二个值是什么。
任何人都可以解释一下吗?
抱歉,如果问题含糊不清,但我已经提供了尽可能多的细节。
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.