现有一张工资表,需要对其进行排名,工资相同的人并列排名,然后再排名,很多刚接触的小伙伴估计第一时间想到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 三种排序函数的区别相关推荐

  1. Oracle中rank() over, dense_rank(), row_number() 的区别

    Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...

  2. oracle数据库rank over用法,Oracle中rank() over, dense_rank(), row_number() 的区别

    Oracle中rank() over, dense_rank(), row_number() 的区别 假设现在有一张学生表student,学生表中有姓名.分数.课程编号,现在我需要按照课程对学生的成绩 ...

  3. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  4. SQL中的三种count()函数

    数据库的使用中,Count() 函数用于统计数据表的记录,返回匹配指定条件的行数. 三种Count() 函数 count(1).count(*).count(列名) 区别 1. count(1).co ...

  5. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  6. SQLaichemy三种排序方式

    一.介绍 SQLALchemy也是一个python的ORM框架,django内部的ORM框架只适用于django,而SQLALchemy适用于所有python的web框架 SQLAlchemy是一个基 ...

  7. mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  8. 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=. ...

  9. SQL:使用备份向导、SQL命令、导出数据三种方式对已建立的数据库进行备份

    SQL:使用备份向导.SQL命令.导出数据三种方式对已建立的数据库进行备份 目录 题目要求 解题步骤 题目要求 使用备份向导备份数据库 "DEMO_4_2_2_1"到考生文件夹&q ...

最新文章

  1. 充电类型一二次检测过程及充电类型
  2. SIFT算法总结:用于图像搜索
  3. 上海1.3万座玻璃幕墙建筑“一网统管”
  4. 收藏!博士大佬的《机器学习》西瓜书手推笔记!
  5. 基于Givens变换的QR分解
  6. html怎样在标签中显示图片,HTML-图片标签学习
  7. 口令破解:kali字典工具的使用:CUPP、Crunch、Hydra
  8. python 基础教程 xml
  9. 计算机管理USB,大势电脑至usb管理软件
  10. 如何将工业现场模拟信号无线传输到PLC/主机?
  11. jquery插件--浮动广告
  12. 3000元台式电脑组装配置单2022 3000元组装电脑配置推荐2022
  13. 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc
  14. 一些短信,权当休息使用
  15. 「数据科学」数据科学家为什么该学习PostgreSQL
  16. 红与蓝:现代Webshell检测引擎免杀对抗与实践
  17. 如何启用计算机的无线功能键在哪,启动无线功能开关在哪
  18. 2023年,莫荒废了时光。
  19. MATLAB和Python求解非线性常微分方程
  20. CSS Sprites(精灵图)

热门文章

  1. echarts 主副标题不换行
  2. 【MacOS】mysql安装配置
  3. Office2019安装视频教程
  4. 数据库原理 复杂查询
  5. fixed计算机术语,fixed是什么意思
  6. 知识图谱之问答系统学习笔记
  7. jquery chosen插件 动态更新数据
  8. 哪个Linux ATA 硬盘,linux – scsi和/ dev / disk / by-id下相同硬盘的ata条目
  9. SQL查找是否“存在“
  10. python中sub是什么意思_相当于Python中R的sub和paste(字符串和数字的连接)