SQL 中 Rank、row_number、dense_rank 三种排序函数的区别
现有一张工资表,需要对其进行排名,工资相同的人并列排名,然后再排名,很多刚接触的小伙伴估计第一时间想到Rank()函数或row_number() 函数,但是结果出来后并不是自己想要的,在这里就给大家介绍下排序函数dense_rank()以及Rank()函数与row_number() 函数之间的区别。
本文用的是mysql 为8.0以上版本。
下面就用实例给大家演示一遍:
在Mysql数据库中创建一张雇员表employee:
create table if not EXISTS `employee`( `id` int UNSIGNED AUTO_INCREMENT ,`name` varchar(20) not null,`salary` int not null ,PRIMARY KEY(`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8;
向employee表中插入数据:
insert into employee (name,salary) VALUES ('张三',12000);insert into employee (name,salary) VALUES ('李四',12500);insert into employee (name,salary) VALUES ('王二麻子',15000);insert into employee (name,salary) VALUES ('赵信',13000);insert into employee (name,salary) VALUES ('关羽',12500);insert into employee (name,salary) VALUES ('张飞',13000);
查看创建的雇员表
select * from employee
分别用三种排序函数对salary字段进行排名:
select name ,
salary,rank() over ( ORDER BY salary desc) as rank1,
ROW_NUMBER( )over ( ORDER BY salary desc) as ROW1,
DENSE_RANK( ) over ( ORDER BY salary desc) as DENSE1
from employee
结果如下:
综合上面的结果可以得出结论:
1、rank 遇重复值排序并列,然后跳跃到当前排序记录次数开始(递增或递减)排序
2、row_number 遇重复值排序不并列,连续不间断(递增或递减)排序
3、dense_rank 遇重复值排序并列,然后继续不间断(递增或递减)排序
以上就是Rank、row_number、dense_rank 三种排序函数的区别啦,小伙伴们最好自己动手操作一遍,这样印象更深刻。
SQL 中 Rank、row_number、dense_rank 三种排序函数的区别相关推荐
- Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...
- oracle数据库rank over用法,Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- SQL中的三种count()函数
数据库的使用中,Count() 函数用于统计数据表的记录,返回匹配指定条件的行数. 三种Count() 函数 count(1).count(*).count(列名) 区别 1. count(1).co ...
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- SQLaichemy三种排序方式
一.介绍 SQLALchemy也是一个python的ORM框架,django内部的ORM框架只适用于django,而SQLALchemy适用于所有python的web框架 SQLAlchemy是一个基 ...
- mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- oracle if=,oracle中if/else的三种实现方式详解
1.标准sql规范 1.单个IF IF v=... THEN END IF; 2.IF ... ELSE IF v=... THEN ELSE t....; END IF; 3.多个IF IF v=. ...
- SQL:使用备份向导、SQL命令、导出数据三种方式对已建立的数据库进行备份
SQL:使用备份向导.SQL命令.导出数据三种方式对已建立的数据库进行备份 目录 题目要求 解题步骤 题目要求 使用备份向导备份数据库 "DEMO_4_2_2_1"到考生文件夹&q ...
最新文章
- 充电类型一二次检测过程及充电类型
- SIFT算法总结:用于图像搜索
- 上海1.3万座玻璃幕墙建筑“一网统管”
- 收藏!博士大佬的《机器学习》西瓜书手推笔记!
- 基于Givens变换的QR分解
- html怎样在标签中显示图片,HTML-图片标签学习
- 口令破解:kali字典工具的使用:CUPP、Crunch、Hydra
- python 基础教程 xml
- 计算机管理USB,大势电脑至usb管理软件
- 如何将工业现场模拟信号无线传输到PLC/主机?
- jquery插件--浮动广告
- 3000元台式电脑组装配置单2022 3000元组装电脑配置推荐2022
- 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc
- 一些短信,权当休息使用
- 「数据科学」数据科学家为什么该学习PostgreSQL
- 红与蓝:现代Webshell检测引擎免杀对抗与实践
- 如何启用计算机的无线功能键在哪,启动无线功能开关在哪
- 2023年,莫荒废了时光。
- MATLAB和Python求解非线性常微分方程
- CSS Sprites(精灵图)
热门文章
- echarts 主副标题不换行
- 【MacOS】mysql安装配置
- Office2019安装视频教程
- 数据库原理 复杂查询
- fixed计算机术语,fixed是什么意思
- 知识图谱之问答系统学习笔记
- jquery chosen插件 动态更新数据
- 哪个Linux ATA 硬盘,linux – scsi和/ dev / disk / by-id下相同硬盘的ata条目
- SQL查找是否“存在“
- python中sub是什么意思_相当于Python中R的sub和paste(字符串和数字的连接)