说明:查询分数排名前三的同学及分数信息。

表结构

user

score

结果

SQL 语句

1. 常规方法

使用临时变量计算排名相关信息。
prescore 用于记录上一次的分数,用于比较是不是同名词。
r 用于记录排名。
c 用于记录同名次排名产生的计数差值。

SELECT `user`.id, `user`.`name`,v.score, v.Ran
FROM `user`,
(
SELECT user_id,score,@r := IF( @prescore = score, @r, @r + @c + 1) AS Ran,@c := IF( @prescore = score, @c + 1, 0) AS cc,@prescore := score.score FROM score,( SELECT @prescore := NULL, @r := 0, @c := 0 ) rv ORDER BY score DESC) v
WHERE `user`.id = v.user_id
AND v.Ran < 4

2. 使用 Mysql RANK()函数

RANK() 函数简介

RANK() 函数为结果集的分区中的每一行分配一个排名。行的等级由一加上前面的等级数指定。
以下显示了RANK()函数的语法:

RANK() OVER (PARTITION BY <expression>[{,<expression>...}]ORDER BY <expression> [ASC|DESC], [{,<expression>...}]
)

在这个语法中:

  • 首先,PARTITION BY子句将结果集划分为分区。RANK()功能在分区内执行,并在跨越分区边界时重新初始化。
  • 其次,ORDER BY子句按一个或多个列或表达式对分区内的行进行排序。
    ROW_NUMBER()函数不同,RANK()函数并不总是返回连续的整数。

SQL

SELECT*
FROM(SELECT`user`.id,`user`.`name`,score.score,RANK() over ( ORDER BY score.score DESC ) AS ran FROMscore,`user` WHERE`user`.id = score.user_id ) v
WHEREv.ran < 4

Mysql 分数排名查询相关推荐

  1. mysql 当前排名查询,MySQL排名查询分配

    我想要一张这样的桌子 显示我们拥有的书,按页数排名.我们要使用50页范围来对页数进行排名.这意味着任何页数在500-549之间的书都具有相同的等级:页数550-599具有相同的等级:页数600-649 ...

  2. 2021年上海高考成绩分数排名查询,2021年上海高考成绩排名及一分一段表

    一分一段表是很重要的填报志愿的依据,也是各大高校划自己分数线的一部分依据.一分一段表是从高到低的排名,考生根据成绩对照一分一段表,就可以知道自己在全省的排名,再参照各类学校各批次招生计划数,确定自己该 ...

  3. mysql 当前排名查询_mysql排名查询

    排名函数的类型 rank函数:如果有并列名次的行,会占用下一名次的位置.比如正常排名是1,2,3,4,rank函数排名之后,结果是:1,1,1,4. dense_rank函数:如果有并列名次的行,不占 ...

  4. 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法 2020年湖南高考成绩位次全省排名查询...

    湖南高考成绩排名查询方法,通过湖南高考的主要是考生,查询自己的排名,计算全省的绩效排名.湖南高考各分数线有多少考生.分数线以上的考生有多少进行详细统计.在填报志愿时间,首先,参考自己在省内的排名,让我 ...

  5. 山西高考成绩位次查询2021,2020年山西高考位次排名查询 山西高考位次所对应的学校...

    山西高考排名是多少,所山西高考状元是指文史类.理工科类学生高考成绩属于省内哪个职位.高考排名可以分为三类:省市排名.区县职级.学衔,引用时,主要在省市县排名,2020山西高考排名查询已在巨力网公布,考 ...

  6. 2021山西省高考成绩位次查询,山西高考排名查询方法 2020年山西高考成绩位次全省排名查询...

    山西省高考成绩排名查询方法,主要是考生通过山西招生考试院公布的当年一分一段表,查询自己的排名,计算全省的绩效排名.山西高考各分数线有多少考生.分数线以上的考生有多少进行详细统计.停留填报志愿时间,首先 ...

  7. mysql怎么查询排第几名并列_MySQL并列排名和顺序排名查询

    准备.创建一张叫scores的表,内容如下.因为测试排名,所以就用最简单的结构.idscore199 280 387 460 580 699 需求.获取分数排名,要求并列排名.如果两个分数相同,则两个 ...

  8. LeetCode MySQL 178. 分数排名(dense_rank连续排名)

    文章目录 1. 题目 2. 解题 1. 题目 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同. 请注意,平分后的下一个名次应该是下一个连续的整数值. 换句话说 ...

  9. 编写一个 SQL 查询来实现分数排名

    每日一题,第一篇 1.编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有" ...

  10. MySQL实现分数排名问题

    数据库记录 mysql> select * from scores; +----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 ...

最新文章

  1. checkbox管理
  2. [经验总结]源代码管理=Ubuntu+Apache+SVN
  3. Android 编译系统分析(一)
  4. 团队作业_1_博客1(分工理解)
  5. Lecture 20 Parallel Algorithms I
  6. E06-libcrypto.so.10 遗失的解决办法
  7. python之websocket
  8. STM32F10x随笔(gcc+scons)
  9. linux 安装org2pg_Ora2Pg的安装和使用
  10. QT 中控件内坐标转换为父窗口坐标或屏幕坐标
  11. Gson解析json字符串
  12. C++:无法打开包括文件:“xxxx.h“
  13. iOS 修改app名称
  14. h5调用第三方app (项目开发思路)
  15. 《Essential C++》学习笔记 第三章:泛型编程风格(一)
  16. 报错解决 | 重装VS2017报错140.Tools.HostX64.TargetARM.Msi.Reso
  17. Discuz中标签及相关帖子的设置使用
  18. 【考研英语语法】强调结构
  19. 华米Q3财报超预期,智能穿戴设备接替手机狂奔?
  20. 会java语言可以学seo吗_学习seo和java哪个更有前途?

热门文章

  1. RMAN高级应用_pizi.pdf
  2. xp查计算机用户名,XP系统MAC地址查询 XP怎么查看电脑MAC地址?-192路由网
  3. html5音乐背景图,HTML5 Audio 麦克风操控+钻石背景图案
  4. nand flash地址机制
  5. 程序员如何成为别人的男朋友
  6. VCL语法教程——5.手持式1311编程器的支持
  7. 程序使用微软雅黑作为默认字体在xp下的问题
  8. 页面性能优化办法有哪些?
  9. 红蜘蛛 v6.2.1160解除键鼠屏蔽以及实现窗口化
  10. python地图 两点距离_使用python计算google地图中两点之间的距离