您的位置:首页 > 数据库

SQLServer2005新增序列功能的几个函数:ROW_NUMBER, RANK, DENSE_RANK, and NTILE

2010-10-30 22:54 501 查看

SQLServer2005新增序列功能的几个函数:ROW_NUMBER, RANK, DENSE_RANK, and NTILE

1 ROW_NUMBER

SELECT ProductID, Name, Price,
ROW_NUMBER() OVER(ORDER BY Price DESC) As PriceRank
FROM Products

ProductIDNamePricePriceRank
8Desk495.00001
10Executive Chair295.00002
9Chair125.00003
5Mouse14.95004
6Mousepad9.99005
11Scissors8.50006
4Stapler7.95007
3Binder1.95008
...

SELECT c.Name, o.DateOrdered, tab.TotalOrderAmount,
ROW_NUMBER() OVER (PARTITION BY c.CustomerID ORDER BY TotalOrderAmount DESC) AS BestCustomer
FROM vwTotalAmountBilledPerOrder AS tab
INNER JOIN Orders AS o ON
o.OrderID = tab.OrderID
INNER JOIN Customers AS c ON
c.CustomerID = o.CustomerID

NameDateOrderedTotalOrderAmountBestCustomer
Bob12/1/200512649.99001
Bob12/19/2005265.85002
Tito12/22/200514.95001
Tito12/18/200512.44002
Darren1/2/2006620.00001
Bruce1/5/200614.95001
Bruce1/4/20069.99002
Lee Ann1/3/20068.50001
...
2 RANK


SELECT c.Name, o.DateOrdered, tab.TotalOrderAmount,
RANK() OVER (ORDER BY TotalOrderAmount DESC) AS BestCustomer
FROM vwTotalAmountBilledPerOrder AS tab
INNER JOIN Orders AS o ON
o.OrderID = tab.OrderID
INNER JOIN Customers AS c ON
c.CustomerID = o.CustomerID

NameDateOrderedTotalOrderAmountBestCustomer
Bob12/1/200512649.99001
Darren1/2/2006620.00002
Bob12/19/2005265.85003
Tito12/22/200514.95004
Bruce1/5/200614.95004
Tito12/18/200512.44006
Bruce1/4/20069.99007
Lee Ann1/3/20068.50008
...
3 NTILE


SELECT ProductID, Name, Price, NTILE(4) OVER (ORDER BY Price DESC) as Quartile

FROM Produts
ProductIDNamePriceQuartile
8Desk495.00001
10Executive Chair295.00001
9Chair125.00002
5Mouse14.95002
6Mousepad9.99003
11Scissors8.50003
4Stapler7.95004
3Binder1.95004
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐