rank,order by 看上去都是排序,但rank的功能简直不要太灵活太强大 。
order by就只是个排序,比如:select 学生姓名,科目,分数 from 成绩表 order by 分数 desc 。
但是,当学生非常多时,order by只看出学生的大致成绩分布,不能看出具体的名次 。如果要知道名次,就得rank配合上场了,如:select 学生姓名,科目,分数,rank over as 名次 from 成绩表。用这个排序有个好处,如果有并列名次的,后面的名次会自动累积增加 。比如有三个并列第2的,再下一个名次就是5 。如果不想名次累积增加,就写成:select 学生姓名,科目,分数,dense_rank over as 名次 from 成绩表 。这样在三个并列第2之后,名次仍然是第3 。
以上方式是拉通排名次的,不管语文数学还是英语,都由高到低排名次 。
【oracle rank函数和order by区别?】rank还可以分区域查询,也就是说如果我们想各个科目分别排序,可以这么写:select 学生姓名,科目,分数,rank over as 名次 from 成绩表 。
推荐阅读
- 如何判断函数可导不可导 如何判断函数可导
- 什么是y是x的函数 什么是YSC
- 网站pr值是什么
- 二次函数与x轴没有交点 二次函数与y轴交点怎么求
- excel函数乘法怎么用
- 信号的自相关函数怎么求 自相关函数怎么求
- 函数中的对应关系指的是什么 函数的对应关系指的是什么
- countifs函数包含文本 countifs函数为何总为零
- arctanx等于什么三角函数
- 函数的绝对引用是什么意思 绝对引用是什么意思