亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > SQL Server 排序函數 ROW_NUMBER和RANK 用法總結

SQL Server 排序函數 ROW_NUMBER和RANK 用法總結

熱門標簽:長沙智能外呼系統 廣東防封卡外呼系統原理是什么 菏澤語音電銷機器人加盟公司 分享百度地圖標注多個位置 外呼系統改進 知名電銷機器人價格 湖南電腦外呼系統平臺 地圖標注牌 電銷機器人公司 需要哪些牌照

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,
  CustomerID,
  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,
  CustomerID,
  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()的比較:

WITH CustomerSum AS
(
  SELECT
    CustomerID,
    ROUND(CONVERT(int, SUM(TotalDue)) / 100, 8) * 100 AS TotalAmt
   FROM Sales.SalesOrderHeader
   GROUP BY CustomerID
)
SELECT *,
  RANK() OVER (ORDER BY TotalAmt DESC) AS Rank,
  DENSE_RANK() OVER (ORDER BY TotalAmt DESC) AS DenseRank
 FROM CustomerSum
結果集:
CustomerID  TotalAmt    Rank    DenseRank
----------- ----------- ------- --------------------
697         1272500     1       1
678         1179800     2       2
170         1134700     3       3
328         1084400     4       4
 :
87          213300      170     170
667         210600      171     171
196         207700      172     172
451         206100      173     173
672         206100      173     173
27          205200      175     174
687         205200      175     174
163         204000      177     175
102         203900      178     176
 :

8.NTILE()基本用法:

SELECT
  SalesOrderID,
  CustomerID,
  NTILE(10000) OVER (ORDER BY CustomerID) AS NTile
 FROM Sales.SalesOrderHeader
結果集:
SalesOrderID    CustomerID    NTile
--------------- ------------- ---------------
43860           1             1
44501           1             1
45283           1             1
46042           1             1
46976           2             2
47997           2             2
49054           2             2
50216           2             2
51728           2             3
57044           2             3
63198           2             3
69488           2             3
44124           3             4
 :
45024           29475         9998
45199           29476         9998
60449           29477         9998
60955           29478         9999
49617           29479         9999
62341           29480         9999
45427           29481         10000
49746           29482         10000
49665           29483         10000

9.所有排序方法對比:

SELECT
  SalesOrderID AS OrderID,
  CustomerID,
  ROW_NUMBER() OVER (ORDER BY CustomerID) AS RowNumber,
  RANK() OVER (ORDER BY CustomerID) AS Rank,
  DENSE_RANK() OVER (ORDER BY CustomerID) AS DenseRank,
  NTILE(10000) OVER (ORDER BY CustomerID) AS NTile
 FROM Sales.SalesOrderHeader
結果集:
OrderID  CustomerID    RowNumber Rank    DenseRank NTile
-------- ------------- --------- ------- --------- --------
43860    1             1         1       1         1
44501    1             2         1       1         1
45283    1             3         1       1         1
46042    1             4         1       1         1
46976    2             5         5       2         2
47997    2             6         5       2         2
49054    2             7         5       2         2
50216    2             8         5       2         2
51728    2             9         5       2         3
57044    2             10        5       2         3
63198    2             11        5       2         3
69488    2             12        5       2         3
44124    3             13        13      3         4
44791    3             14        13      3         4
 :

10.PARTITION BY基本使用方法:

SELECT
  SalesOrderID,
  SalesPersonID,
  OrderDate,
  ROW_NUMBER() OVER (PARTITION BY SalesPersonID ORDER BY OrderDate) AS OrderRank
 FROM Sales.SalesOrderHeader
 WHERE SalesPersonID IS NOT NULL
結果集:
SalesOrderID    SalesPersonID    OrderDate    OrderRank
--------------- ---------------- ------------ --------------
 :
43659           279              2001-07-01 00:00:00.000    1
43660           279              2001-07-01 00:00:00.000    2
43681           279              2001-07-01 00:00:00.000    3
43684           279              2001-07-01 00:00:00.000    4
43685           279              2001-07-01 00:00:00.000    5
43694           279              2001-07-01 00:00:00.000    6
43695           279              2001-07-01 00:00:00.000    7
43696           279              2001-07-01 00:00:00.000    8
43845           279              2001-08-01 00:00:00.000    9
43861           279              2001-08-01 00:00:00.000    10
 :
48079           287              2002-11-01 00:00:00.000    1
48064           287              2002-11-01 00:00:00.000    2
48057           287              2002-11-01 00:00:00.000    3
47998           287              2002-11-01 00:00:00.000    4
48001           287              2002-11-01 00:00:00.000    5
48014           287              2002-11-01 00:00:00.000    6
47982           287              2002-11-01 00:00:00.000    7
47992           287              2002-11-01 00:00:00.000    8
48390           287              2002-12-01 00:00:00.000    9
48308           287              2002-12-01 00:00:00.000    10
 :


11.PARTITION BY聚合使用方法:
WITH CTETerritory AS
(
  SELECT
    cr.Name AS CountryName,
    CustomerID,
    SUM(TotalDue) AS TotalAmt
   FROM
    Sales.SalesOrderHeader AS soh
    INNER JOIN Sales.SalesTerritory AS ter ON soh.TerritoryID = ter.TerritoryID
    INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = ter.
CountryRegionCode
   GROUP BY
    cr.Name, CustomerID
)
SELECT
  *,
  RANK() OVER(PARTITION BY CountryName ORDER BY TotalAmt, CustomerID DESC) AS Rank
 FROM CTETerritory


結果集:

CountryName    CustomerID    TotalAmt    Rank
-------------- ------------- ----------- --------------
Australia      29083         4.409       1
Australia      29061         4.409       2
Australia      29290         5.514       3
Australia      29287         5.514       4
Australia      28924         5.514       5
 :
Canada         29267         5.514       1
Canada         29230         5.514       2
Canada         28248         5.514       3
Canada         27628         5.514       4
Canada         27414         5.514       5
 :
France         24538         4.409       1
France         24535         4.409       2
France         23623         4.409       3
France         23611         4.409       4
France         20961         4.409       5
 :

12.PARTITION BY求平均數使用方法:

WITH CTETerritory AS
(
  SELECT
    cr.Name AS CountryName,
    CustomerID,
    SUM(TotalDue) AS TotalAmt
   FROM
    Sales.SalesOrderHeader AS soh
    INNER JOIN Sales.SalesTerritory AS ter ON soh.TerritoryID = ter.TerritoryID
    INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = ter.
CountryRegionCode
   GROUP BY
    cr.Name, CustomerID
)
SELECT
  *,
  RANK() OVER (PARTITION BY CountryName ORDER BY TotalAmt, CustomerID DESC) AS Rank,
  AVG(TotalAmt) OVER(PARTITION BY CountryName) AS Average
 FROM CTETerritory


結果集:

CountryName    CustomerID    TotalAmt    Rank    Average
-------------- ------------- ----------- ------- ------------------
Australia      29083         4.409       1       3364.8318
Australia      29061         4.409       2       3364.8318
Australia      29290         5.514       3       3364.8318
 :
Canada         29267         5.514       1       12824.756
Canada         29230         5.514       2       12824.756
Canada         28248         5.514       3       12824.756

您可能感興趣的文章:
  • SQLServer中Partition By及row_number 函數使用詳解
  • SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同
  • ROW_NUMBER SQL Server 2005的LIMIT功能實現(ROW_NUMBER()排序函數)
  • SQL Server中row_number函數的常見用法示例詳解

標簽:天水 商洛 西寧 珠海 呼和浩特 泉州 福建 美容院

巨人網絡通訊聲明:本文標題《SQL Server 排序函數 ROW_NUMBER和RANK 用法總結》,本文關鍵詞  SQL,Server,排序,函數,ROW,NUMBER,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server 排序函數 ROW_NUMBER和RANK 用法總結》相關的同類信息!
  • 本頁收集關于SQL Server 排序函數 ROW_NUMBER和RANK 用法總結的相關信息資訊供網民參考!
  • 推薦文章
    国产一区二区精品尤物| 国产不卡精品一区二区三区| 青青久久国产成人免费网站| 欧美激情伊人| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 97视频免费在线观看| 国产精品1024在线永久免费| 精品视频在线观看一区二区| 日韩男人天堂| 中文字幕一区二区三区 精品| 日韩一级黄色片| 国产视频在线免费观看| 韩国三级视频网站| 亚洲精品永久一区| 99热精品在线| 欧美国产日韩在线| 麻豆网站在线看| 久久久久久久久综合影视网| 精品视频一区二区三区免费| 香蕉视频久久| 天堂网中文在线| 美女免费精品高清毛片在线视| 国产网站免费| 九九精品影院| 欧美国产日韩在线| 国产一区精品| 久久久久久久久综合影视网| 亚洲天堂免费| 久久99爰这里有精品国产| 久久久久久久网| 九九精品久久| 日本在线不卡视频| 国产视频在线免费观看| 欧美日本免费| 国产原创视频在线| 国产成人女人在线视频观看| 久久99这里只有精品国产| 成人免费观看的视频黄页| 黄视频网站免费| 国产不卡在线看| 麻豆午夜视频| 国产国语对白一级毛片| 91麻豆精品国产高清在线| 日本免费乱人伦在线观看| 国产福利免费视频| 午夜在线观看视频免费 成人| 欧美一级视频免费| 成人高清视频在线观看| 亚洲天堂免费| 韩国三级一区| 精品国产亚洲人成在线| 黄色免费三级| 精品国产亚洲人成在线| 日本在线播放一区| 免费国产在线观看不卡| 国产高清视频免费观看| 欧美一级视| 精品久久久久久中文字幕2017| 91麻豆精品国产高清在线| 成人高清视频在线观看| 99久久精品国产麻豆| 毛片高清| 色综合久久天天综合观看| 国产不卡福利| 91麻豆高清国产在线播放| 日本伦理片网站| 成人av在线播放| 欧美激情一区二区三区视频 | 成人影视在线观看| 国产精品自拍在线观看| 欧美日本国产| 日日夜夜婷婷| 九九精品在线| 亚洲爆爽| 韩国三级香港三级日本三级| 四虎久久精品国产| 可以免费看毛片的网站| 午夜在线亚洲男人午在线| 精品视频一区二区三区| 九九精品影院| 亚洲精品永久一区| 亚洲女初尝黑人巨高清在线观看| 精品视频一区二区三区免费| 黄视频网站在线看| 久久99中文字幕| 国产福利免费视频| 黄视频网站在线观看| 亚洲 激情| 亚洲女初尝黑人巨高清在线观看| 午夜在线影院| 午夜家庭影院| 日韩av成人| 91麻豆爱豆果冻天美星空| 午夜在线观看视频免费 成人| 欧美激情一区二区三区中文字幕| 欧美另类videosbestsex久久 | 成人a大片在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久99欧美| 午夜在线观看视频免费 成人| 国产亚洲免费观看| 四虎影视久久久免费| 麻豆污视频| 日韩av片免费播放| 欧美国产日韩在线| 国产精品免费久久| 精品久久久久久综合网| 99热视热频这里只有精品| 国产网站在线| 欧美国产日韩久久久| 国产精品免费久久| 亚洲第一色在线| 99热视热频这里只有精品| 久久99中文字幕久久| 美女免费精品高清毛片在线视| 精品毛片视频| 美女免费毛片| 国产视频网站在线观看| 超级乱淫伦动漫| 日韩在线观看视频免费| 国产精品自拍在线| 高清一级毛片一本到免费观看| 韩国毛片免费| 国产一区免费在线观看| 欧美大片aaaa一级毛片| 国产91精品系列在线观看| 日韩一级黄色大片| 欧美激情在线精品video| 国产一区二区精品尤物| 国产a视频精品免费观看| 欧美激情一区二区三区中文字幕| 日本免费乱理伦片在线观看2018| 国产韩国精品一区二区三区| 成人免费福利片在线观看| 日本免费乱理伦片在线观看2018| 久久久久久久免费视频| 国产视频一区在线| 深夜做爰性大片中文| 香蕉视频一级| 亚洲 国产精品 日韩| 深夜做爰性大片中文| 午夜激情视频在线播放| 中文字幕一区二区三区 精品| 美女免费毛片| 欧美一区二区三区在线观看| 欧美α片无限看在线观看免费| 成人免费一级纶理片| a级精品九九九大片免费看| 国产激情一区二区三区| 亚洲第一色在线| 久久国产精品自由自在| 精品视频在线观看视频免费视频| 一本高清在线| 欧美a级大片| 精品在线免费播放| 日韩综合| 日韩在线观看视频黄| 香蕉视频亚洲一级| 色综合久久天天综合| 国产成人精品综合久久久| 超级乱淫伦动漫| 欧美大片一区| 欧美激情一区二区三区视频| 国产不卡福利| 亚洲精品久久久中文字| 四虎论坛| 精品久久久久久中文| 日韩综合| 美女免费毛片| 国产伦久视频免费观看 视频| 999久久66久6只有精品| 麻豆网站在线看| 欧美激情一区二区三区中文字幕| 国产一区精品| 日韩在线观看视频免费| 欧美日本二区| 国产a视频精品免费观看| 精品久久久久久免费影院| 色综合久久天天综合观看| 国产精品1024在线永久免费| 亚洲天堂免费| 国产一级生活片| 欧美激情一区二区三区在线播放 | 亚洲天堂在线播放| 中文字幕一区二区三区精彩视频| 青青久久国产成人免费网站| 免费的黄色小视频| 久久久久久久网| 九九免费精品视频| 黄色福利| 欧美国产日韩久久久| 欧美a级v片不卡在线观看| 精品久久久久久影院免费| 日韩免费在线| 99久久网站| 亚久久伊人精品青青草原2020| 午夜欧美成人久久久久久| 国产91素人搭讪系列天堂| 日本在线播放一区| 国产91丝袜高跟系列|