内容来自: 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) 排名函数相关推荐

  1. oracle rank 语法_Oracle用于排名的函数

    rank()在Oracle中可用于排名,属于分析函数,rank() over ([partition by 分区字段1[,分区字段2...] order by 排序字段 asc|desc). 分区字段 ...

  2. oracle rank 语法_oracle rank函数怎么用

    首先创建示例表,再初始化几条测试数据 create table t_score ( id number primary key, student_id  number(3), student_name ...

  3. Oracle笔记 之 分组统计排名函数dense_rank/rank()-over()函数

    分组统计排名函数 解析 dense_rank/rank()-over()用于对数据进行统计排名. rank-over()函数对相同的统计值的排名相同,不同的统计值之间的排名不连续(相同统计值的排名均为 ...

  4. oracle rank 语法_Oracle排名函数(Rank)实例详解

    -- 已知:两种排名方式 ( 分区和不分区 ): 使用和不使用 partition -- 两种计算方式 ( 连续 , 不连续 ), 对应函数: dense_rank,rank ·查询原始数据:学号 , ...

  5. mysql oracle对空值_Oracle空值处理函数

    /************Oracle中NUL.NVL2 和NULLIF的用法***************/ NULL指的是空值,或者非法值. 1.NVL(expr1, expr2)函数 expr ...

  6. oracle unused 语法_Oracle教程之设置为unused 后如何恢复 ?

    用DBA账户完成下列操作. 1. 得到表的obj# select obj# from obj$ where name='表名'; 2. 修改cols select cols from tab$ whe ...

  7. 第一篇博客-Sql排名函数DENSE_RANK

    Sql排名函数☞DENSE_RANK 1.DENSE_RANK函数介绍 dense_rank函数用于返回结果集的分区内每行的排名,函数考虑到了over子句中排序字段值相同的情况,over子句中排序字段 ...

  8. Oracle排名函数(Rank)实例详解

    这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下 --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:d ...

  9. Oracle 数据库数据排名函数:rank() 和dense_rank() 。

    Oracle 数据库数据排名函数:  rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名)   ...

最新文章

  1. 如何洞察行业中的应用场景?(上篇)
  2. COM编程入门---转发
  3. android如何不用系统签名,更新Android系统应用程序,带/不带平台签名
  4. java 封装 继承 堕胎_Java的继承、封装和多态
  5. LFTP : 一个功能强大的命令行FTP程序
  6. MeasureSpec学习
  7. win10桌面背景图片与锁屏背景图片提取(注册表寻找提取路径——亲测可用)
  8. java项目-第58期基于ssm的酒店管理系统
  9. ab压力测试post请求入参json格式处理
  10. php 语言开发,PHP语言开发常用工具
  11. 微信开发者工具协同使用
  12. 微博Mysql数据库规范
  13. python 处理pandas的panel数据
  14. 使用backdrop-filter实现毛玻璃效果
  15. TM4C123系列(三)————PWM输出
  16. local variable xxx referenced before assignment
  17. matlab 点顺时针排序,按顺时针顺序排序点?
  18. 以服务为驱动 自上而下创建私有云
  19. oracle 使用 mybatis select in 10000问题怎么解决
  20. Top-Down!!!

热门文章

  1. 百度黄埔学院二期开学,未来“首席AI架构师”齐报道
  2. Python——字符串、列表、元组、字典、公用方法(day03)
  3. Java程序员最常用的Linux命令
  4. TestFlight 提交提示“处理你的请求时出错。请稍后再试”
  5. 售前工程师的快速成长经验
  6. 跨平台格式化输出int64_t
  7. 动态规划解决硬币找零问题
  8. MM32F3273G8P火龙果开发板MindSDK开发教程1 - 点亮LED
  9. python设计模式【7】-模板方法模式
  10. FZU 2232 炉石传说(二分图最大匹配)