MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER

   日期:2024-12-29     作者:yindufu1      
核心提示:文章目录 1. 排名分类 1.1 区别RANK,DENSE_RANK和ROW_NUMBER1.2 分组排名2. 准备数据3. 不分组排名 3.1 连续排名3.2 并列

文章目录

      • 1. 排名分类
      • MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER

        • 1.1 区别RANK,DENSE_RANK和ROW_NUMBER
        • 1.2 分组排名
      • 2. 准备数据
      • 3. 不分组排名
        • 3.1 连续排名
        • 3.2 并列跳跃排名
        • 3.3 并列连续排名
      • 4. 分组排名
        • 4.1 分组连续排名
        • 4.2 分组并列跳跃排名
        • 4.3 分组并列连续排名

 

在MYSQL的最新版本MYSQL8已经支持了排名函数,和。但是在就得版本中还不支持这些函数,只能自己实现。实现方法主要用到了条件判断语句(或)和添加临时变量。


1. 排名分类

1.1 区别RANK,DENSE_RANK和ROW_NUMBER

  • RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。
  • DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。
  • ROW_NUMBER连续排名,即使相同的值,依旧按照连续数字进行排名。

1.2 分组排名

2. 准备数据

创建一张分数表,里面有字段:分数score,课程号course_id和学生号student_id。
执行如下SQL语句,进行导入数据。

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

3. 不分组排名

3.1 连续排名

  1. 使用实现
 
  • 1
  • 2
  • 3
  1. 使用实现
 
  • 1
  • 2
  • 3

3.2 并列跳跃排名

  1. 使用实现
 
  • 1
  • 2
  • 3
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.3 并列连续排名

  1. 使用实现
 
  • 1
  • 2
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4. 分组排名

4.1 分组连续排名

  1. 使用实现
 
  • 1
  • 2
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5

4.2 分组并列跳跃排名

  1. 使用实现
 
  • 1
  • 2
  • 3
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4.3 分组并列连续排名

  1. 使用实现
 
  • 1
  • 2
  • 3
  1. 使用和语句实现
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以将上述的IF条件提取出来

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
     本文地址:http://w.yusign.com/tjnews/3958.html    述古往 http://w.yusign.com/static/ , 查看更多
 
标签: 排名 实现
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0
 
更多>同类生活信息

相关文章
最新文章
推荐文章
推荐图文
生活信息
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号