校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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 用法總結的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日本va欧美va精品| 日韩一级高清毛片| 国产精品免费丝袜| 成人毛片在线观看| 国产日韩欧美综合一区| 国产精品中文字幕一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 日韩在线观看一区二区| 欧美精品一区视频| 91污片在线观看| 日韩一区精品字幕| 久久看人人爽人人| www.欧美日韩| 婷婷国产v国产偷v亚洲高清| 欧美一区二区观看视频| 粉嫩aⅴ一区二区三区四区| 亚洲欧洲av在线| 欧美日韩卡一卡二| 国产一二三精品| 伊人色综合久久天天| 久久嫩草精品久久久久| 高清国产一区二区| 一区二区三区四区精品在线视频| 精品国一区二区三区| 色一情一伦一子一伦一区| 裸体一区二区三区| 伊人夜夜躁av伊人久久| 久久综合999| 欧美日韩国产影片| 色天天综合久久久久综合片| 麻豆91精品视频| 国产69精品久久99不卡| 制服丝袜中文字幕一区| 国产一区二区三区黄视频 | 国产成人av电影| 亚洲一区二区在线免费观看视频| 91精品国产综合久久精品| 成人av一区二区三区| 精品一区中文字幕| 久久国产精品色婷婷| 午夜精品久久久久久| 夜夜嗨av一区二区三区网页| 欧美激情一区二区三区不卡| 久久人人97超碰com| 精品女同一区二区| 国产日本欧洲亚洲| 国产精品视频一二| 亚洲精品免费在线观看| 亚洲欧洲韩国日本视频| 亚洲欧美国产高清| 亚洲精品国产无天堂网2021 | 亚洲第一会所有码转帖| 偷拍一区二区三区四区| 日韩不卡一区二区三区| 91九色最新地址| 色88888久久久久久影院野外| 91亚洲午夜精品久久久久久| 色婷婷综合五月| 欧美另类高清zo欧美| 国产午夜精品一区二区三区嫩草| 日韩精品一区二区三区中文精品| 精品国产网站在线观看| 中文在线一区二区| 日本不卡一区二区| 国产盗摄女厕一区二区三区 | 不卡大黄网站免费看| 欧美日韩一区二区三区免费看| 欧美日韩国产成人在线免费| 日韩欧美一级片| 伊人一区二区三区| 亚洲天天做日日做天天谢日日欢| 在线观看亚洲精品视频| 欧美成人精品福利| 亚洲欧美日韩在线不卡| 国产米奇在线777精品观看| 91精品1区2区| 亚洲国产经典视频| 奇米影视一区二区三区小说| 成人听书哪个软件好| 精品电影一区二区| 亚洲成人7777| 色呦呦一区二区三区| 国产欧美日韩亚州综合 | 国产麻豆成人精品| 精品国产一区二区三区忘忧草| 成人精品国产免费网站| 国产一区二区三区美女| 丝袜脚交一区二区| 亚洲成a人片在线不卡一二三区 | 欧美日韩三级在线| 欧美zozo另类异族| 国产性色一区二区| 精品国产91九色蝌蚪| 日韩欧美激情一区| 欧美日韩中文字幕精品| 欧美午夜影院一区| 色94色欧美sute亚洲线路二 | 欧美日韩国产一级| 欧美日韩国产色站一区二区三区| 制服.丝袜.亚洲.另类.中文| 国产精品久久看| 国产99精品视频| 欧美sm极限捆绑bd| 精品一区二区三区免费视频| 欧美日韩亚洲综合在线| 91精品国产高清一区二区三区蜜臀 | 天堂影院一区二区| 成人丝袜18视频在线观看| 欧美丰满少妇xxxxx高潮对白| 国产精品国模大尺度视频| 国产一区二区网址| 欧美精选午夜久久久乱码6080| 国产精品伦理一区二区| 国产精品白丝jk白祙喷水网站 | 国产精品国产三级国产a | 国产黄色精品网站| 精品少妇一区二区三区在线视频| 一个色综合av| 91老师片黄在线观看| 国产精品美女久久久久久久网站| 经典三级在线一区| 337p亚洲精品色噜噜| 亚洲国产视频在线| 在线观看视频一区二区欧美日韩| 综合久久久久综合| 99久久综合狠狠综合久久| 欧美激情在线看| 成人在线视频一区二区| 中文在线一区二区| 不卡在线视频中文字幕| 国产精品理论片| 99免费精品在线| 亚洲欧美日韩成人高清在线一区| 成人av在线网站| 亚洲欧洲精品一区二区三区不卡| 99re热视频这里只精品| 亚洲靠逼com| 欧美天堂一区二区三区| 亚洲成人免费视频| 欧美久久高跟鞋激| 日韩成人一级片| 日韩西西人体444www| 久久aⅴ国产欧美74aaa| 久久久综合九色合综国产精品| 国产美女精品人人做人人爽| 26uuu精品一区二区在线观看| 国产精品资源在线看| 中文字幕av一区 二区| av不卡在线观看| 亚洲一本大道在线| 日韩欧美国产小视频| 国产高清亚洲一区| 国产精品久久久久久一区二区三区| 菠萝蜜视频在线观看一区| 亚洲久草在线视频| 欧美精品免费视频| 国产主播一区二区| 亚洲日本在线观看| 欧美在线免费视屏| 国产aⅴ综合色| 成人免费在线播放视频| 欧美色中文字幕| 日韩影院精彩在线| 国产欧美一区二区精品秋霞影院| 99久久精品99国产精品| 亚洲一区影音先锋| www国产成人| 91久久精品一区二区三区| 美国十次综合导航| 国产精品大尺度| 欧美一区二区啪啪| 成人h精品动漫一区二区三区| 亚洲图片欧美色图| 久久久久国产精品厨房| 在线一区二区三区做爰视频网站| 蜜臀久久久99精品久久久久久| 国产精品婷婷午夜在线观看| 欧美狂野另类xxxxoooo| 国产麻豆精品95视频| 亚洲五码中文字幕| 国产午夜精品一区二区三区嫩草| 欧日韩精品视频| 国产一区二区女| 一区二区视频在线| 26uuu色噜噜精品一区二区| 9i看片成人免费高清| 久久99国产精品久久| 亚洲一区二区精品久久av| 日本一区二区三区视频视频| 91精品国产丝袜白色高跟鞋| 9i在线看片成人免费| 久久99精品久久久| 亚洲四区在线观看| 精品少妇一区二区三区日产乱码| 色偷偷久久一区二区三区| 国产乱人伦偷精品视频不卡| 日韩国产在线观看一区| 亚洲天堂av一区| 欧美国产精品v| 精品国产一二三区|