Oracle中rank() over, dense_rank(), row_number() 的区别

假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。

select * from student

1. rank over ()可以实现对学生排名,特点是成绩相同的两名是并列,如下1 2 2 4 5

select name,

course,

rank() over(partition by course order by score desc) as rank

from student;

2. dense_rank()和rank over()很像,但学生成绩并列后并不会空出并列所占的名次,如下1 2 2 3 4

select name,

course,

dense_rank() over(partition by course order by score desc) as rank

from student;

3. row_number这个函数不需要考虑是否并列,那怕根据条件查询出来的数值相同也会进行连续排名

select name,

course,

row_number() over(partition by course order by score desc) as rank

from student;

答疑:

1. partition by用于给结果集进行分区。

2. partition by和group by有何区别?

partition by只是将原始数据进行名次排列(记录数不变)

group by是对原始数据进行聚合统计(记录数可能变少, 每组返回一条)

3. 使用rank over()的时候,空值是最大的,如果排序字段为null, 可能造成null字段排在最前面,影响排序结果。

可以这样: rank over(partition by course order by score desc nulls last)

oracle数据库rank over用法,Oracle中rank() over, dense_rank(), row_number() 的区别相关推荐

  1. oracle数据库 日期函数用法

    oracle数据库 日期函数用法 –Oracle trunc()函数的用法 /日期******/ 1.select trunc(sysdate) from dual --2013-01-06 今天的日 ...

  2. Oracle中rank() over, dense_rank(), row_number() 的区别

    Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...

  3. Oracle数据库字符集为WE8ISO8859P1存储中文和Java读写展示

    文章目录 前言 再次出现的现象 分析 失败尝试1 失败尝试2 失败尝试3 解决 结论 前言 之前<Oracle数据库字符集为WE8ISO8859P1存储中文和客户端程序展示中文问题>记录了 ...

  4. oracle数据库exp备份表,oracle数据库exp备份表

    Oracle exp/imp,备份或导入时注意的事项 Oracle exp/imp,备份或导入时注意的事项: 本篇主要讲述的是Oracle exp/imp备份导入的实际操作中需要注意的事项的介绍,凡事 ...

  5. oracle数据库触发器是否生效,Oracle数据库触发器

    第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...

  6. oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总

    ORACLE数据库常见问题汇总,oracle常见问题汇总 提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from ...

  7. oracle数据库没有选项,创建oracle数据库时,出现ORA-00922: 选项缺失或无效

    sdd53HOME 新建oracle数据库时遇到ORA-00922: 选项缺失或无效的问题,如图: 原因:一般是语句的语法有问题.比如命名不对,关键字写错等等.对于非标准的命名,一般采用双引号来创建. ...

  8. oracle数据库的拼接字符串,Oracle数据库拼接字符串

    Ora-03113\Ora-03114与Oracle In 拼接字符串的问题 刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将 ...

  9. MySQL数据库与Oracle数据库在存储中文字符以字节或字符存储的区别

    一.Oracle数据库存储中文字符 Oracle数据库可以以字节或者字符来存储字符串的,一般来说默认是存储字节,你可以查看数据库NLS_LENGTH_SEMANTICS的值. 可以看到Oracle数据 ...

最新文章

  1. 利用 CoreGraphics 绘制折线图
  2. nginx配置文件中的location中文详解
  3. mybatis-plus的 mapper.xml 路径配置的坑
  4. Java可移动性不强_java地位无可撼动的原因
  5. tomcat服务自动关闭_windows10系统关闭自动更新服务
  6. 实现100倍加速!谷歌开源超强张量计算库TensorNetwork
  7. RPG游戏-NPC系统
  8. 英语词根与说文解字词典读书笔记,并总结输出思维导图
  9. 机器学习之二分类模型评价指标
  10. ftp下载工具,6款能够满足所有需求的ftp下载工具
  11. 【数据库原理】关系-Relationship
  12. Spring Cloud:负载均衡 - Spring Cloud Loadbalancer原理
  13. 波特率(baud)与比特率(bit/s)的差别
  14. 联合证券|“仰望”概念爆发,多股涨停!人气龙头股罕见“炸板”
  15. 无线网络打印机服务器安装步骤,在win7安装带网络服务器的打印机步骤.ppt
  16. 机器人建模中移动关节如何建立坐标系_解析:四轴机器人和六轴机器人有什么区别?---徕深科技...
  17. 如何将多个excel表格合并成一个_如何将两个pdf文件合并成一个
  18. java long 随机 正数_java中如何产生随机正负数
  19. Speed Dreams 竞速梦想 3D赛车游戏
  20. 求职信英语计算机作文,英语求职信范文(精选5篇)

热门文章

  1. 使用Git将代码传送(更新或者下载到本地)到github/gitee
  2. 通过准确性、可解释性、校准度和忠实度,对ChatGPT的能力进行全面评估
  3. chromium 42 如何增加数据目录
  4. SAP中QM采购收货消息实测
  5. Facebook的「真实」社交VR
  6. 计算机硬软件系统知识点,《计算机硬基础》第四章计算机的软件安装.ppt
  7. Windows下好用的工具集合
  8. PHPExcel表格处理
  9. a标签不跳转的三种方法
  10. zabbix监控服务器CPU状态