vlambda博客
学习文章列表

mysql 8.0 窗口函数之序号函数

1. ROW_NUMBER()
定义:ROW_NUMBER()函数作用是将select查询到的数据进行排序,每一条数据加一个序号,一般多用于分页查询。

select *, ROW_NUMBER() over(order by score desc) 'rank' from sc;



2.RANK()

定义:RANK()函数可以对某一个字段进行排名,排序产生相同的数据时,序号相同,并且在后续能够加上相同的数量(能够跳过排名)

select *, rank() over(order by score desc) 'rank' from sc;

mysql 8.0 窗口函数之序号函数

3.DENSE_RANK()

定义:DENSE_RANK()函数也是排名函数,和RANK()功能相似,但是在遇到相同时不会跳过排名

select *, DENSE_RANK() over(order by score desc'rank' from sc

mysql 8.0 窗口函数之序号函数

4.NTILE()

定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样,分为几个区,一个区会有多少个。

select *, NTILE(2) over(order by score desc) 'rank' from sc;

mysql 8.0 窗口函数之序号函数

select *, NTILE(4) over(order by score desc) 'rank' from sc


分组:Partition By

用在over()函数中,作用与group by类似。可以用作分组排名

-- 查询每一科成绩的分数排名select *, Rank() over(Partition By CID order by score desc) 'rank' from sc