热门文章
联系我们
联系人:寇先生
微信公众号:
SQL Server 生成序号方法(row_number()、rank()、dense_rank()、ntile())
知识分享不易,转载请标注来源:http://www.blenderkou.top/contents/13/6367.html 版权申明:欢迎转载,但请注明出处。 一些博文中的参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
SQL Server 生成序号方法:row_number()、rank()、dense_rank()、ntile())
先上结论,三者的区别如下:
rank()排序相同时会重复,总数不变,即会出现1、1、3这样的排序结果;
dense_rank()排序相同时会重复,总数会减少,即会出现1、1、2这样的排序结果;
row_number()排序相同时不会重复,会根据顺序排序;
ntile()将搜索出来的数据分组装进桶中,具体装进几个桶,需要通过ntile中的数字进行设置,如果分组不均匀,多出来的部分默认放到前面的组。
具体实例:
表中数据
一、row_number()
(1)row_number() over(order by [列名])
说明:将select查询的数据依次进行排序
SELECT row_number() over(ORDER BY tbl.runoob_id) as num,tbl.* FROM runoob_tbl tbl;
(2)row_number() over(partition by [列名])
SELECT row_number() over( PARTITION by tbl.runoob_author ) as num,tbl.* FROM runoob_tbl tbl;
结果如下图所示:
备注:partition by 和 order by 可以联合使用
二、rank()
(1)rank() over(order by [列名])
说明:对数据进行排序,不过如果[列名]存在相同的数据,则它们的排序是一样的,这样后续有可能出现跳跃的序号。
SELECT rank() over(ORDER BY tbl.runoob_author) as num,tbl.* FROM runoob_tbl tbl;
结果如下图所示:
三、dense_rank()
(1)dense_rank() over(order by [列名])
SELECT dense_rank() over(ORDER BY tbl.runoob_author) as num,tbl.* FROM runoob_tbl tbl;
结果如下图所示:
四、ntile()
(1)ntile([数字]) over(order by [列名])
SELECT ntile(2) over (ORDER BY t.runoob_id),t.* FROM runoob_tbl t;
结果如图所示,将结果分为2个桶:
分组不均匀时:
扫描二维码,关注我的公众号,第一时间获取文章!
更多好文:
SAP B1 Fiori 模式的 Web Client 、Service Layer来了!10.0 PL01
SAPB1-开发成果-4 DelBOMAddOn[批量删除BOM]
SAP B1 库存明细表:批次、序列、库位 [HANA & SQL 通用]
前往www.blenderkou.top 获取更多内容。
知识分享不易,转载请标注来源:http://www.blenderkou.top/contents/13/6367.html 版权申明:欢迎转载,但请注明出处。 一些博文中的参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
上一篇
SQL Server 查询存储过程\视图\函数等 包含某个关键字
下一篇
sql server 查询存储过程的创建时间 和 最后修改时间