SQLServer排序功能row_number等级用法总结

SQLServer排序功能row_number等级用法总结
1.row_number的基本用法():

选择
SalesOrderID,
CustomerID,
row_number()在(顺序为rownumber SalesOrderID)
从sales.salesorderheader
结果集:
rownumber SalesOrderID CustomerID
-------------------------------------------
四亿三千六百五十九万六千七百六十一
四亿三千六百六十万一千一百七十二
四亿三千六百六十一万四千四百二十三
四亿三千六百六十二万二千二百七十四
四亿三千六百六十三万五千一百零五
四亿三千六百六十四万三千九百七十六
四亿三千六百六十五万一千四百六十七
四亿三千六百六十六万五千一百一十八
四亿三千六百六十七万六千四百六十九


2.rank的基本用法():

选择
SalesOrderID,
CustomerID,
等级()在(为CustomerID)等级
从sales.salesorderheader
结果集:
SalesOrderID CustomerID列
中国
四百三十八万六千零一十一
四百四十五万零一百一十一
四百五十二万八千三百一十一
四百六十万四千二百一十一
四百六十九万七千六百二十五
四百七十九万九千七百二十五
四百九十万五千四百二十五
五百零二万一千六百二十五
五百一十七万二千八百二十五
五百七十万四千四百二十五
六百三十一万九千八百二十五
六百九十四万八千八百二十五
四千四百一十二万四千三百一十三


三.使用CTE过滤row_number使用():

作为与numberedrows

选择
SalesOrderID,
CustomerID,
row_number()在(顺序为rownumber SalesOrderID)
从sales.salesorderheader


SELECT * FROM numberedrows
在100和200之间的rownumber
结果集:

rownumber SalesOrderID CustomerID
------------------------------------------
四兆三千七百五十九亿一千三百二十五万七千一百
四兆三千七百六十亿一千六百三十五万二千一百零一
四兆三千七百六十一亿一千六百四十九万三千一百零二

四百三十八亿五千七百五十三万三千一百九十九
四十三亿八千五百八十三万六千二百

4。使用的row_number()与组:

与customersum
作为

选择CustomerID,金额(总额)为totalamt
从sales.salesorderheader
组ID

选择
*,
在row_number()(由totalamt倒序)作为rownumber
从customersum
结果集:
totalamt rownumber CustomerID
-------------------------------------------
六十七亿八千一百一十七万九千八百五十七点四六五七一
六十九亿七千一百一十七万九千四百七十五点八三九九二
十七亿零一百一十三万四千七百四十七点四四一三三
三十二亿八千一百零八万四千四百三十九点零二六五四
五十一亿四千一百零七万四千一百五十四点三零三五五
十五亿五千一百零四万五千一百九十七点零四九八六
七亿二千一百万五千五百三十九点七一八一七


5.row_number()或()聚合等级:

CustomerSum

选择CustomerID,金额(总额)为totalamt
从sales.salesorderheader
组ID

选择*,
等级()在(由totalamt倒序)等级
或row_number()在(由totalamt倒序)作为row_number
从customersum
秩()的结果集:
totalamt CustomerID的秩
----------------------------------------------------
六十七亿八千一百一十七万九千八百五十七点四六五七一
六十九亿七千一百一十七万九千四百七十五点八三九九二
十七亿零一百一十三万四千七百四十七点四四一三三
三十二亿八千一百零八万四千四百三十九点零二六五四
五十一亿四千一百零七万四千一百五十四点三零三五五


6.dense_rank的基本用法():

选择
SalesOrderID,
CustomerID,
dense_rank()在(为CustomerID)作为denserank
从sales.salesorderheader
在CustomerID > 100
结果集:
denserank SalesOrderID CustomerID
-------------------------------------------
四亿六千九百五十万一千零一十一
四亿七千九百七十九万一千零一十一
四亿九千零四十八万一千零一十一
五亿零二百万一千零一十一
五亿一千七百万一千零一十一
五亿七千零二十二万一千零一十一
六亿三千一百三十八万一千零一十一
六亿九千四百万一千零一十一
四亿三千八百五十五万一千零二十二
四亿四千四百九十八万一千零二十二
四亿五千二百八十万一千零二十二
四亿六千零三十八万一千零二十二
四亿六千九百五十一万一千零二十二
四亿七千九百七十八万一千零二十二
四亿九千一百零三万一千零二十二
五亿零一百九十九万一千零二十二
五亿一千七百三十三万一千零三十三
五亿七千零五十八万一千零三十三


7.rank之间的比较()和()dense_rank:

CustomerSum

选择
CustomerID,
圆(转换(int,金额(总额))/ 100, 8)* 100 totalamt
从sales.salesorderheader
组ID

*选择,
等级()在(由totalamt倒序)等级,
在dense_rank()(由totalamt倒序)作为denserank
从customersum
结果集:
denserank CustomerID totalamt秩

六千九百七十一亿二千七百二十五万零一十一
六千七百八十一亿一千七百九十八万零二十二
一千七百零一亿一千三百四十七万零三十三
三千二百八十一亿零八百四十四万零四十四

八十七兆二千一百三十三亿零一十七万零一百七十
六百六十七兆二千一百零六亿零一十七万一千一百七十一
一百九十六兆二千零七十七亿零一十七万二千一百七十二
四百五十一兆二千零六十一亿零一十七万三千一百七十三
六百七十二兆二千零六十一亿零一十七万三千一百七十三
二十七兆二千零五十二亿零一十七万五千一百七十四
六百八十七兆二千零五十二亿零一十七万五千一百七十四
一百六十三兆二千零四十亿零一十七万七千一百七十五
一百零二兆二千零三十九亿零一十七万八千一百七十六


8.ntile的基本用法():

选择
SalesOrderID,
CustomerID,
(10000)在ntile(顺序为ntile CustomerID)
从sales.salesorderheader
结果集:
ntile SalesOrderID CustomerID
-------------------------------------------
四百三十八万六千零一十一
四百四十五万零一百一十一
四百五十二万八千三百一十一
四百六十万四千二百一十一
四百六十九万七千六百二十二
四百七十九万九千七百二十二
四百九十万五千四百二十二
五百零二万一千六百二十二
五百一十七万二千八百二十三
五百七十万四千四百二十三
六百三十一万九千八百二十三
六百九十四万八千八百二十三
四百四十一万二千四百三十四

四十五兆零二百四十二亿九千四百七十五万九千九百九十八
四十五兆一千九百九十二亿九千四百七十六万九千九百九十八
六十兆四千四百九十二亿九千四百七十七万九千九百九十八
六十兆九千五百五十二亿九千四百七十八万九千九百九十九
四十九兆六千一百七十二亿九千四百七十九万九千九百九十九
六十二兆三千四百一十二亿九千四百八十万九千九百九十九
四百五十四兆二千七百二十九亿四千八百一十一万
四百九十七兆四千六百二十九亿四千八百二十一万
四百九十六兆六千五百二十九亿四千八百三十一万

9。比较各种排序方法

选择
SalesOrderID为OrderId,
CustomerID,
row_number()在(为CustomerID)作为rownumber,
等级()在(为CustomerID)等级,
dense_rank()在(为CustomerID)DenseRank,
(10000)在ntile(顺序为ntile CustomerID)
从sales.salesorderheader
结果集:
行rownumber秩denserank ntile CustomerID
------------------------------------------------------
四十三亿八千六百零一万一千一百一十一
四十四亿五千零一十一万二千一百一十一
四十五亿二千八百三十一万三千一百一十一
四十六亿零四百二十一万四千一百一十一
四十六亿九千七百六十二万五千五百二十二
四十七亿九千九百七十二万六千五百二十二
四十九亿零五百四十二万七千五百二十二
五十亿二千一百六十二万八千五百二十二
五十一亿七千二百八十二万九千五百二十三
五百七十亿四千四百二十一万零五百二十三
六百三十一亿九千八百二十一万一千五百二十三
六百九十四亿八千八百二十一万二千五百二十三
四千四百一十二亿四千三百一十三万一千三百三十四
四千四百七十九亿一千三百一十四万一千三百三十四


基本使用方法10.partition:

选择
SalesOrderID,
SalesPersonID,
订单,
row_number()()(用以在salespersonid OrderDate分区)为orderrank
从sales.salesorderheader
在salespersonid不空
结果集:
salespersonid OrderDate orderrank SalesOrderID
---------------------------------------------------------

43659279 2001-07-01 00:00: 0 1
43660279 2001-07-01 00:00: 0 2
43681279 2001-07-01 00:00: 0 3
43684279 2001-07-01 00:00: 0 4
43685279 2001-07-01 00:00: 0 5
43694279 2001-07-01 00:00: 0 6
43695279 2001-07-01 00:00: 0 7
43696279 2001-07-01 00:00: 0 8
43845279 2001-08-01 00:00: 0 9
43861279 2001-08-01 00:00: 0 10

48079287 2002-11-01 00:00: 0 1
48064287 2002-11-01 00:00: 0 2
48057287 2002-11-01 00:00: 0 3
47998287 2002-11-01 00:00: 0 4
48001287 2002-11-01 00:00: 0 5
48014287 2002-11-01 00:00: 0 6
47982287 2002-11-01 00:00: 0 7
47992287 2002-11-01 00:00: 0 8
48390287 2002-12-01 00:00: 0 9
48308287 2002-12-01 00:00: 0 10

通过聚合方法11.partition:
CTETerritory

选择
名为countryname CR,
CustomerID,
金额(总额)为totalamt

sales.salesorderheader作为SOH
内部联接sales.salesterritory为塞soh.territoryid = ter.territoryid
person.countryregion内加入Cr对cr.countryregioncode =后。
countryregioncode

Cr的名字,CustomerID

选择
*,
等级()在(countryname分区以totalamt、CustomerID DESC)等级
从cteterritory
结果集:

countryname CustomerID totalamt秩
----------------------------------------------------
澳大利亚290834.4091
澳大利亚290614.4092
澳大利亚292905.5143
澳大利亚292875.5144
澳大利亚289245.5145

加拿大292675.5141
加拿大292305.5142
加拿大282485.5143
加拿大276285.5144
加拿大274145.5145

法国245384.4091
法国245354.4092
法国236234.4093
法国236114.4094
法国209614.4095


12.partition采用平均数的方法:

CTETerritory

选择
名为countryname CR,
CustomerID,
金额(总额)为totalamt

sales.salesorderheader作为SOH
内部联接sales.salesterritory为塞soh.territoryid = ter.territoryid
person.countryregion内加入Cr对cr.countryregioncode =后。
countryregioncode

Cr的名字,CustomerID

选择
*,
等级()在(由totalamt,countryname顺序分区CustomerID DESC)等级,
AVG(totalamt)在(分区countryname)平均
从cteterritory
结果集:

countryname CustomerID totalamt等级平均
---------------------------------------------------------------
澳大利亚290834.4091 3364.8318
澳大利亚290614.4092 3364.8318
澳大利亚292905.5143 3364.8318

加拿大292675.5141 12824.756
加拿大292305.5142 12824.756
加拿大282485.5143 12824.756
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部