表结构
说明: 将查询到的数据进行排序,给每一条数据加一个序号,一般多用于分页查询
例子: 根据成绩倒序,给每条数据一个序号(ID)
结果:
select row_number() over(order by score1 desc) as id,t.* from aaa t;
这里ID就是每个学生的序号 根据score(分数)进行desc倒序
select rank() over(order by score1 desc) as id, t.* from aaa t;
说明: DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底有什么不同?
例子: 根据成绩排名,给每条数据一个排名(ID)
结果:
select dense_rank() over(order by score1 desc) as id, t.* from aaa t;
RANK() | DENSE_RANK() |
---|---|
RANK()是跳跃的排名 | DENSE_RANK()是连续的排名 |
说明: NTILE()函数将over()排序后的数据尽量平均的分发到指定数目的组中,各个组有编号,编号从1开始
例子: 根据成绩排名,分为20组
结果:
select NTILE(20) over(order by score1 desc) as id, t.* from aaa t;
本文地址:https://blog.csdn.net/qq_42700109/article/details/107303428
如对本文有疑问, 点击进行留言回复!!
mysql中如何实现 row_number分组求topN的功能
SQLSERVER中RANK OVER(PARTITION BY)的用法
Kaspersky Endpoint Security 10 for Windows version 10.2.6.3733 is no longer supported
网友评论