您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

mysql四大排名函数(row_number、rank、dense_rank、ntile)使用简介

时间:02-01来源:作者:点击数:

有如下表

在这里插入图片描述

1.row_number

row_number在排名时序号 连续 不重复,即使遇到表中的两个3时亦如此

执行

select row_number() OVER(order by e.salary desc) as row_num , e.salary

from employee e

结果如图

在这里插入图片描述

注意:在使用row_number实现分页时需要特别注意一点,over子句中的order by 要与Sql排序记录中的order by 保持一致,否则得到的序号可能不是连续的

例如:

在这里插入图片描述

执行

select row_number() OVER(order by e.salary desc) as row_num , e.salary

from employee e

order by e.time_length

结果

在这里插入图片描述

2.rank

rank函数会把要求排序的值相同的归为一组且每组序号一样,排序不会连续

执行

select rank() OVER(order by e.salary desc) as row_num , e.salary

from employee e

结果:

在这里插入图片描述

3.dense_rank

dense_rank排序是连续的,也会把相同的值分为一组且每组排序号一样

执行

select dense_rank() OVER(order by e.salary desc) as row_num , e.salary

from employee e

结果:

在这里插入图片描述

4.NTILE

NTILE(group_num)将所有记录分成group_num个组,每组序号一样

执行

select NTILE(2) OVER(order by e.salary desc) as row_num , e.salary

from employee e

结果:

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门