Oracle学习笔记:rank、dense_rank、row_number、ntile等排序算法
在 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等排序算法的更多相关文章
- [z]一个SQL语句分清楚RANK(),DENSE_RANK(),ROW_NUMBER()三个排序的不同
		转自:http://blog.csdn.net/s630730701/article/details/51902762 在SCOTT用户下,执行下面SQL; SELECT s.deptno,s.ena ... 
- [转]oracle分析函数Rank, Dense_rank, row_number
		oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number) 目录 ==================== ... 
- oracle分析函数Rank, Dense_rank, row_number
		http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 目录=============================== ... 
- Oracle分析函数 — rank, dense_rank, row_number用法
		本文通过例子演示了Oracle分析函数 —— rank, dense_rank, row_number的用法. //首先建score表 create table score( course nva ... 
- Oracle 的开窗函数 rank,dense_rank,row_number
		1.开窗函数和分组函数的区别 分组函数是指按照某列或者某些列分组后进行某种计算,比如计数,求和等聚合函数进行计算. 开窗函数是指基于某列或某些列让数据有序,数据行数和原始数据数相同,依然能曾现个体数据 ... 
- Oracle学习笔记三 SQL命令
		SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL) 
- oracle学习笔记第一天
		oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ... 
- rank,dense_rank,row_number使用和区别
		rank,dense_rank,row_number区别 一:语法(用法): rank() over([partition by col1] order by col2) dense ... 
- Oracle学习笔记——点滴汇总
		Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster 
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
		从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ... 
随机推荐
- 通过generate解析SQL日志生成xml进行SQL回放
			查看Oracle redo日志来分析SQL执行记录 1)设置Oracle数据字典导出路径参数(可选) shutdown immediatealter system set UTL_FILE_DIR=' ... 
- fcgi vs. gunicorn vs. uWSGI
			fcgi vs. gunicorn vs. uWSGI - Peterbe.comhttps://www.peterbe.com/plog/fcgi-vs-gunicorn-vs-uwsgi uWSG ... 
- Python: 根据利润计算奖金
			简述:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到40 ... 
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_13-删除页面-前端-Api调用
			增加删除链接 <el-button size="small" type="text" @click="del(page.row.pageId)& ... 
- WebsSocket
			本篇阅读目录 一.Websocket原理(握手.解密.加密) 二.基于Python实现简单示例 回到顶部 一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协 ... 
- 编写expect程序报extra characters after close-brace错误或extra characters after close-quote,解决
			expect程序报extra characters after close-brace或extra characters after close-quote 可能原因 流程控制语句中的"{& ... 
- 为 Exchange 2010 用户添加联系人头像
			一.修改AD架构 为了给联系人添加头像,实际是让联系人头像缩略图能够显示在全局地址列表 GAL 中,需要让其在全局编录(GC)中进行复制,默认情况下,对象的“thumbnailphoto”属性值不会在 ... 
- CRLF——http response 拆分攻击(webgoat)
			0x01 什么是CRLF CRLF是“回车+换行”(\r和\n)/(%0d和%0a)的简称. CRLF利用: 正常输入的请求中加入恶意代码,控制HTTP响应header中的字符(Location,Se ... 
- Information retrieval (IR class1)
			1. 什么是IR? IR与数据库的区别? 答:数据库是检索结构化的数据,例如关系数据库:而信息检索是检索非结构化/半结构化的数据,例如:一系列的文本.信息检索是属于NLP(自然语言处理)里面最实用的一 ... 
- H3C路由器登录策略专题讲解
			password-control login-attempt login-times [ exceed { lock | lock-time time | unlock } ] undo passwo ... 
