oracle数据库rank over用法,Oracle中rank() over, dense_rank(), row_number() 的区别
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() 的区别相关推荐
- oracle数据库 日期函数用法
oracle数据库 日期函数用法 –Oracle trunc()函数的用法 /日期******/ 1.select trunc(sysdate) from dual --2013-01-06 今天的日 ...
- Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...
- Oracle数据库字符集为WE8ISO8859P1存储中文和Java读写展示
文章目录 前言 再次出现的现象 分析 失败尝试1 失败尝试2 失败尝试3 解决 结论 前言 之前<Oracle数据库字符集为WE8ISO8859P1存储中文和客户端程序展示中文问题>记录了 ...
- oracle数据库exp备份表,oracle数据库exp备份表
Oracle exp/imp,备份或导入时注意的事项 Oracle exp/imp,备份或导入时注意的事项: 本篇主要讲述的是Oracle exp/imp备份导入的实际操作中需要注意的事项的介绍,凡事 ...
- oracle数据库触发器是否生效,Oracle数据库触发器
第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...
- oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总
ORACLE数据库常见问题汇总,oracle常见问题汇总 提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from ...
- oracle数据库没有选项,创建oracle数据库时,出现ORA-00922: 选项缺失或无效
sdd53HOME 新建oracle数据库时遇到ORA-00922: 选项缺失或无效的问题,如图: 原因:一般是语句的语法有问题.比如命名不对,关键字写错等等.对于非标准的命名,一般采用双引号来创建. ...
- oracle数据库的拼接字符串,Oracle数据库拼接字符串
Ora-03113\Ora-03114与Oracle In 拼接字符串的问题 刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将 ...
- MySQL数据库与Oracle数据库在存储中文字符以字节或字符存储的区别
一.Oracle数据库存储中文字符 Oracle数据库可以以字节或者字符来存储字符串的,一般来说默认是存储字节,你可以查看数据库NLS_LENGTH_SEMANTICS的值. 可以看到Oracle数据 ...
最新文章
- 利用 CoreGraphics 绘制折线图
- nginx配置文件中的location中文详解
- mybatis-plus的 mapper.xml 路径配置的坑
- Java可移动性不强_java地位无可撼动的原因
- tomcat服务自动关闭_windows10系统关闭自动更新服务
- 实现100倍加速!谷歌开源超强张量计算库TensorNetwork
- RPG游戏-NPC系统
- 英语词根与说文解字词典读书笔记,并总结输出思维导图
- 机器学习之二分类模型评价指标
- ftp下载工具,6款能够满足所有需求的ftp下载工具
- 【数据库原理】关系-Relationship
- Spring Cloud:负载均衡 - Spring Cloud Loadbalancer原理
- 波特率(baud)与比特率(bit/s)的差别
- 联合证券|“仰望”概念爆发,多股涨停!人气龙头股罕见“炸板”
- 无线网络打印机服务器安装步骤,在win7安装带网络服务器的打印机步骤.ppt
- 机器人建模中移动关节如何建立坐标系_解析:四轴机器人和六轴机器人有什么区别?---徕深科技...
- 如何将多个excel表格合并成一个_如何将两个pdf文件合并成一个
- java long 随机 正数_java中如何产生随机正负数
- Speed Dreams 竞速梦想 3D赛车游戏
- 求职信英语计算机作文,英语求职信范文(精选5篇)