SQL四大排名函数

SQL四大排名函数

    • ROW_NUMBER(),排序函数
    • RANK(),排名函数
    • DENSE_RANK(),排名函数
    • NTILE(),分组函数

表结构
表结构


ROW_NUMBER(),排序函数

说明: 将查询到的数据进行排序,给每一条数据加一个序号,一般多用于分页查询
例子: 根据成绩倒序,给每条数据一个序号(ID)
结果:

select row_number() over(order by score1 desc) as id,t.* from aaa t;

SQL四大排名函数_第1张图片
这里ID就是每个学生的序号 根据score(分数)进行desc倒序


RANK(),排名函数

  1. 说明: RANK()函数,排名函数,可以对某一个字段进行排名,这里为什么和ROW_NUMBER()不一样那,ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样出现相同的,他们的排名是一样的。
  2. 例子: 根据成绩排名,给每条数据一个排名(ID)
  3. 结果:
select rank() over(order by score1 desc) as id, t.* from aaa t;

SQL四大排名函数_第2张图片


DENSE_RANK(),排名函数

说明: DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底有什么不同?
例子: 根据成绩排名,给每条数据一个排名(ID)
结果:

select dense_rank() over(order by score1 desc) as id, t.* from aaa t;

SQL四大排名函数_第3张图片

RANK() DENSE_RANK()
RANK()是跳跃的排名 DENSE_RANK()是连续的排名
SQL四大排名函数_第4张图片 SQL四大排名函数_第5张图片

NTILE(),分组函数

说明: NTILE()函数将over()排序后的数据尽量平均的分发到指定数目的组中,各个组有编号,编号从1开始
例子: 根据成绩排名,分为20组

结果:

select NTILE(20) over(order by score1 desc) as id, t.* from aaa t;

SQL四大排名函数_第6张图片

你可能感兴趣的:(Oracle,MySQL)