Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1418字,纯文字阅读大概需要3分钟。
内容图文
![Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法](/upload/InfoBanner/zyjiaocheng/885/55bc310cd91f4980afbd41544a515147.jpg)
在 oracle
中有很多函数可以实现排序的功能,但是不尽相同。下面一一解说。
row_number函数
功能:可实现分组排序,为数据行添加序号,多用于分页查询。
语法:row_number() over(partition by column order by column desc)
select *,
row_number() over(partition by id order by score desc) as rank
from Score;
注意:当存在相同成绩的学生时,row_number()
会依次进行排序,序号不相同,例如:1、2、3、4、5……
row_number()
的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列。
rank函数
功能:针对某一个字段进行排序,跳跃排名。
语法:rank() over(partition by column order by column desc)
select *,
rank() over(partition by id order by score desc) as rank
from Score;
注意:当存在相同成绩的学生时,rank()
的排名是一样的,例如:1、2、2、2、5……
dense_rank函数
功能:同样的,排序函数,稍微有点不同,密集排名。
语法:dense_rank() over(partition by column order by column desc)
select *,
dense_rank() over(partition by id order by score desc) as rank
from Score;
注意:dense_rank()
是密集排名,排名具有连续性,例如:1、2、2、2、3……
ntile函数
功能:oracle
中的分析函数,对一个数据分区中的有序结果集进行划分,将其分组为各个桶,并为每个小组分配一个唯一的组编号。默认是对表在不做任何操作之前进行切片分组的。
语法:ntile(n) over(partition by column order by column desc)
select shopname,
sales,
date2,
ntile(3) over(partition by shopname order by sales desc nulls last)
from temp_cwh_window;
根据shopname进行分组,再按sales排序之后分为3个桶。
内容总结
以上是互联网集市为您收集整理的Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法全部内容,希望文章能够帮你解决Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。