oracle rank 语法_Oracle-- (RANK) 排名函数
内容来自: Oracle® Database SQL Language Reference 11g Release 2 (11.2) E41084-03。
empolyees表来自hr方案。
RANK函数可以计算值在特定排序中的位置(使用聚合语法)及按指定列的值计算排名(使用统计语法)。
聚合语法的火车图:
下面语句计算了工资$2215和佣金为0.5%的员工在查询结果中排名。
SELECT RANK(2015, .05) WITHIN GROUP(ORDER BYsalary, commission_pct) "Rank"FROM employees_t;
查询结果:
Rank----------
1
ORDER BY:指定了排序字段,查询集合只有通过该子句排序,我们才可以获取值在排序好的集合中的位置。
RANK:该函数的参数数量必须与ORDER BY字段的数量相同。
DESC、ASC:如果不指定降序(DESC),集合将按照升序(ASC)排列,所以排名既可以按升序也可以按降序排列。
NULLS FIRST、NULLS LAST:指定NULL值在排列中放在开头还是放在结尾,所以这会影响值排名。
统计语法的火车图:
该语法适合查询排名前几位或排名后几位的记录
下面语句可以查询部门60的所有员工的排名,排名按照工资由低到高:
SELECTdepartment_id, last_name, salary,
RANK()OVER (PARTITION BY department_id ORDER BYsalary ) RANKFROM employees_t WHERE department_id = 60
ORDER BY RANK, last_name;
查询结果:
DEPARTMENT_ID LAST_NAME SALARY RANK------------- ------------------------- ---------- ----------
60 Lorentz 4200.00 1
60 Austin 4800.00 2
60 Pataballa 4800.00 2
60 Ernst 6000.00 4
60 Hunold 9000.00 5
RANK:不需要指定参数。
OVER:指定排名对象。
PARTITION BY:可以分区排名,指定分区字段。
ORDER BY:与聚合语法中的ORDER BY用法一样。
在上面的例子中,分别对每个部分中员工进行排名,这里仅显示了部门60。注意,排名号可能不是连续的,如果有两个排名第二的记录,他们的排名号都是2,紧接着则是排名号为4的记录。
下面是几个使用示例:
分别选出各部门工资最高的员工:
select * from (select department_id,salary, rank() over(partition by department_id order by salary desc) rank from employees t) where rank=1;
oracle rank 语法_Oracle-- (RANK) 排名函数相关推荐
- oracle rank 语法_Oracle用于排名的函数
rank()在Oracle中可用于排名,属于分析函数,rank() over ([partition by 分区字段1[,分区字段2...] order by 排序字段 asc|desc). 分区字段 ...
- oracle rank 语法_oracle rank函数怎么用
首先创建示例表,再初始化几条测试数据 create table t_score ( id number primary key, student_id number(3), student_name ...
- Oracle笔记 之 分组统计排名函数dense_rank/rank()-over()函数
分组统计排名函数 解析 dense_rank/rank()-over()用于对数据进行统计排名. rank-over()函数对相同的统计值的排名相同,不同的统计值之间的排名不连续(相同统计值的排名均为 ...
- oracle rank 语法_Oracle排名函数(Rank)实例详解
-- 已知:两种排名方式 ( 分区和不分区 ): 使用和不使用 partition -- 两种计算方式 ( 连续 , 不连续 ), 对应函数: dense_rank,rank ·查询原始数据:学号 , ...
- mysql oracle对空值_Oracle空值处理函数
/************Oracle中NUL.NVL2 和NULLIF的用法***************/ NULL指的是空值,或者非法值. 1.NVL(expr1, expr2)函数 expr ...
- oracle unused 语法_Oracle教程之设置为unused 后如何恢复 ?
用DBA账户完成下列操作. 1. 得到表的obj# select obj# from obj$ where name='表名'; 2. 修改cols select cols from tab$ whe ...
- 第一篇博客-Sql排名函数DENSE_RANK
Sql排名函数☞DENSE_RANK 1.DENSE_RANK函数介绍 dense_rank函数用于返回结果集的分区内每行的排名,函数考虑到了over子句中排序字段值相同的情况,over子句中排序字段 ...
- Oracle排名函数(Rank)实例详解
这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下 --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:d ...
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
Oracle 数据库数据排名函数: rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名) ...
最新文章
- 如何洞察行业中的应用场景?(上篇)
- COM编程入门---转发
- android如何不用系统签名,更新Android系统应用程序,带/不带平台签名
- java 封装 继承 堕胎_Java的继承、封装和多态
- LFTP : 一个功能强大的命令行FTP程序
- MeasureSpec学习
- win10桌面背景图片与锁屏背景图片提取(注册表寻找提取路径——亲测可用)
- java项目-第58期基于ssm的酒店管理系统
- ab压力测试post请求入参json格式处理
- php 语言开发,PHP语言开发常用工具
- 微信开发者工具协同使用
- 微博Mysql数据库规范
- python 处理pandas的panel数据
- 使用backdrop-filter实现毛玻璃效果
- TM4C123系列(三)————PWM输出
- local variable xxx referenced before assignment
- matlab 点顺时针排序,按顺时针顺序排序点?
- 以服务为驱动 自上而下创建私有云
- oracle 使用 mybatis select in 10000问题怎么解决
- Top-Down!!!