博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rank() over,dense_rank() over,row_number() over的区别
阅读量:4072 次
发布时间:2019-05-25

本文共 859 字,大约阅读时间需要 2 分钟。

row_number() over() 1 2 3 4 5 6

rank() over() 1 2 3 3 5 6

dense_rank() over() 1 2 3 3 4 5

1.rank() over:查出指定条件后的进行排名。特点是,加入是对学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。

select name,subject,score,rank() over(partition by subject order by score desc) rankfrom student_score;

2.dense_rank() over:与ran() over的区别是,两名学生的成绩并列以后,下一位同学并不空出所占的名次。

select name,subject,score,dense_rank() over(partition by subject order by score desc) rankfrom student_score;

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

select name,subject,score,row_number() over(partition by subject order by score desc) rankfrom student_score;

4.使用rank() over的时候,空值是最大的,如果排序字段为null,可能造成null字段排在最前面,影响排序结果。可以这样:rank() over(partition by course order by score desc nulls last)来规避这个问题。

select name,subject,score,rank() over(partition by subject order by score desc nulls last) rankfrom student_score;

 

转载地址:http://tykni.baihongyu.com/

你可能感兴趣的文章
Https加密及攻防
查看>>
Java生成随机不重复推广码邀请码
查看>>
Java8 Lambda表达式介绍
查看>>
Java8 stream流介绍
查看>>
Java多线程之synchronized及死锁编写
查看>>
Java NIO源码剖析及使用实例(一):Buffer
查看>>
[swift实战入门]手把手教你编写2048(一)
查看>>
[swift实战入门]手把手教你编写2048(二)
查看>>
Java 爬虫入门(网易云音乐和知乎实例)
查看>>
[swift实战入门]手把手教你编写2048(三)
查看>>
堆排序原理(图)及java版代码
查看>>
【JAVA数据结构】栈(数组实现)
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>