oracle rank函数和order by区别?

2022-12-02 23:06:56 发布:网友投稿 作者:网友投稿
热度:81

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。

以上方式是拉通排名次的,不管语文数学还是英语,都由高到低排名次。

rank还可以分区域查询,也就是说如果我们想各个科目分别排序,可以这么写:select 学生姓名,科目,分数,rank over as 名次 from 成绩表。

下一篇:万能的条友们,谁能把95开头电话屏蔽了?
上一篇:被踢出QQ群,怎么才能恢复?