oraclerank()函数讲解
Oracle rank()分析函数:
分为:(1)连续或不连续:dense_rank,rank
(2)分区或不分区:使⽤partition,不使⽤partition
举例:student表数据(sno编号,sname姓名,course科⽬,score成绩)
select * from student;
1. 对⽐rank和dense_rank
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. 分区与分组有什么区别?
分区:将原始数据进⾏顺序排列(记录数不变)
分组:对原始数据进⾏聚合统计(记录数变少,每组返回⼀个结果)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论