|
感兴趣的小伙伴,下面一起跟随脚本之家 jb51.cc的小编两巴掌来看看吧!
1.ROW_NUMBER()基本用法:
SELECT SalesOrderID, CustomerID, ROW_NUMBER() OVER (ORDER BY SalesOrderID) AS RowNumber FROM Sales.SalesOrderHeader 结果集: SalesOrderID CustomerID RowNumber --------------- ------------- --------------- 43659 676 1 43660 117 2 43661 442 3 43662 227 4 43663 510 5 43664 397 6 43665 146 7 43666 511 8 43667 646 9 :
2.RANK()基本用法:
SELECT SalesOrderID, RANK() OVER (ORDER BY CustomerID) AS Rank FROM Sales.SalesOrderHeader 结果集: SalesOrderID CustomerID Rank --------------- ------------- ---------------- 43860 1 1 44501 1 1 45283 1 1 46042 1 1 46976 2 5 47997 2 5 49054 2 5 50216 2 5 51728 2 5 57044 2 5 63198 2 5 69488 2 5 44124 3 13 :
3.利用CTE来过滤ROW_NUMBER()的用法:
WITH NumberedRows AS ( SELECT SalesOrderID, CustomerID, ROW_NUMBER() OVER (ORDER BY SalesOrderID) AS RowNumber FROM Sales.SalesOrderHeader )
SELECT * FROM NumberedRows WHERE RowNumber BETWEEN 100 AND 200 结果集:
SalesOrderID CustomerID RowNumber --------------- ------------- -------------- 43759 13257 100 43760 16352 101 43761 16493 102 : 43857 533 199 43858 36 200
4.带Group by的ROW_NUMBER()用法:
WITH CustomerSum AS ( SELECT CustomerID,SUM(TotalDue) AS TotalAmt FROM Sales.SalesOrderHeader GROUP BY CustomerID ) SELECT *, ROW_NUMBER() OVER (ORDER BY TotalAmt DESC) AS RowNumber FROM CustomerSum 结果集: CustomerID TotalAmt RowNumber ------------- --------------- --------------- 678 1179857.4657 1 697 1179475.8399 2 170 1134747.4413 3 328 1084439.0265 4 514 1074154.3035 5 155 1045197.0498 6 72 1005539.7181 7 :
5.ROW_NUMBER()或是RANK()聚合用法:
WITH CustomerSum AS ( SELECT CustomerID,SUM(TotalDue) AS TotalAmt FROM Sales.SalesOrderHeader GROUP BY CustomerID ) SELECT *, RANK() OVER (ORDER BY TotalAmt DESC) AS Rank --或者是ROW_NUMBER() OVER (ORDER BY TotalAmt DESC) AS Row_Number FROM CustomerSum RANK()的结果集: CustomerID TotalAmt Rank ----------- --------------------- -------------------- 678 1179857.4657 1 697 1179475.8399 2 170 1134747.4413 3 328 1084439.0265 4 514 1074154.3035 5 :
6.DENSE_RANK()基本用法:
SELECT SalesOrderID, DENSE_RANK() OVER (ORDER BY CustomerID) AS DenseRank FROM Sales.SalesOrderHeader WHERE CustomerID > 100 结果集: SalesOrderID CustomerID DenseRank ------------ ----------- -------------------- 46950 101 1 47979 101 1 49048 101 1 50200 101 1 51700 101 1 57022 101 1 63138 101 1 69400 101 1 43855 102 2 44498 102 2 45280 102 2 46038 102 2 46951 102 2 47978 102 2 49103 102 2 50199 102 2 51733 103 3 57058 103 3 :
7.RANK()与DENSE_RANK()的比较:
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|