oracle 的 rank()函数
Oracle rank()分析函数:
分为:(1)连续或不连续:dense_rank,rank
(2)分区或不分区:使用partition,不使用partition
举例:student表数据(sno编号,sname姓名,course科目,score成绩)
select * from student;
1. 对比rank和dense_rank
(1)使用rank:查询科目为Oracle的学生名次
select sno,sname,course,score,rank() over(order by score desc) as 名次 from student where course='Oracle';
(2)使用dense_rank:查询科目为Oracle的学生名次
select sno,sname,course,score,dense_rank() over(order by score desc) as 名次 from student where
course='Oracle';
以上可以说明:rank为不连续,dense_rank为连续
2. 对比使用partition-分区和不分区:
查询各学生各科目成绩排名【三种语句结果做对比】
(1)select sno,sname,course,score,rank() over(order by score desc) as 名次 from student;
(2)select sno,sname,course,score,rank() over(partition by course order by score desc) as 名次 from student;
(3)select sno,sname,course,score,dense_rank() over(partition by course order by score desc) as 名次 from student;
(1) (2)
(3)
知识点:
1. 语法:rank() over(order by 排序字段 顺序)
dense_rank() over(partition by 分区字段 order by 排序字段 顺序)
2. partition by 关键字是分析性函数的一部分,与聚合函数不同的地方在于分析函数能返回以这个分组中的多条记录;
而聚合函数一般只有一条记录反映统计值。
partition by 用于给结果集分组,如果没有指定就会把整个结果集作为一个来分组,分区函数与排名函数一起使用。
3. 分区与分组有什么区别?
分区:将原始数据进行顺序排列(记录数不变)
分组:对原始数据进行聚合统计(记录数变少,每组返回一个结果)
oracle 的 rank()函数相关推荐
- oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...
- Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内的数据 ...
- oracle sql时间排序函数,sql的rank函数
SQL SERVER 2008排序函数(窗口函数) 排序函数可以用来协助给结果集增加位置信息.SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号 ...
- oracle工资在3000到5000,Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数...
本文以SCOTT用户下初始的EMP表为参考.代码可直接使用. 查询EMP表结构的语句如下,[代码1]: DESC EMP; EMP表结构如下:[结果1]: SQL> DESC EMP; 名称 是 ...
- Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数
本文以SCOTT用户下初始的EMP表为参考.代码可直接使用. 查询EMP表结构的语句如下,[代码1]: DESC EMP; EMP表结构如下:[结果1]: SQL> DESC EMP ...
- Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...
- oracle的rank,over partition 使用 和lead
http://blog.csdn.net/rokii/article/details/6429145 排列(rank ())函数.这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后 ...
- java中rank函数_sql rank()函数
RANK() OVER([]) partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区. Order_by_clause确定将RANK值应用到分区中的行时所使 ...
- oracle的连接函数,Oracle各种连接函数总结
1.前言 Oracle可用连接函数会介绍以下几个 Oracle列转行函数 Listagg() strcat() wmsys.wm_concat() 2.Oracle列转行函数 Listagg() 2. ...
最新文章
- easyui-layout中的收缩层无法显示标题问题解决
- Computer:计算机测试理论(开发/测试/上线)之DEV、SIT、UAT、PRD四套环境详细介绍之详细攻略
- 软件项目管理0707:要对客户发自真心的好
- LINUX中软件包的分类
- 更改matlab默认启动路径
- localstorage存储大小_Cookie 已凉,Web 存储该这么做!
- (数据库系统概论|王珊)第四章数据库安全性-第一节:数据库安全性概述
- for循环中gets_Python中for循环的一些非常规操作
- 【django】数据库初始化写入信息
- Wildcard Matching
- 数据结构上机实践第九周项目3 - 利用二叉树遍历思想解决问题
- Silverlight 中的 CoreCLR
- 【渝粤教育】电大中专电商运营实操 (2)作业 题库
- 寒冬之下,被cai的那些人到底去哪了?
- angularJs内置指令63个
- 王石先生深奥的脑筋急转弯
- 基于大数据平台分析前程无忧大数据招聘信息实现数据可视化
- 使用easyexcel快速导出xlsx表格(简洁、高效、易懂)
- 【Java-数据类型】
- FDB学习总结(测试相关)