Mysql 分数排名查询
说明:查询分数排名前三的同学及分数信息。
表结构
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 分数排名查询相关推荐
- mysql 当前排名查询,MySQL排名查询分配
我想要一张这样的桌子 显示我们拥有的书,按页数排名.我们要使用50页范围来对页数进行排名.这意味着任何页数在500-549之间的书都具有相同的等级:页数550-599具有相同的等级:页数600-649 ...
- 2021年上海高考成绩分数排名查询,2021年上海高考成绩排名及一分一段表
一分一段表是很重要的填报志愿的依据,也是各大高校划自己分数线的一部分依据.一分一段表是从高到低的排名,考生根据成绩对照一分一段表,就可以知道自己在全省的排名,再参照各类学校各批次招生计划数,确定自己该 ...
- mysql 当前排名查询_mysql排名查询
排名函数的类型 rank函数:如果有并列名次的行,会占用下一名次的位置.比如正常排名是1,2,3,4,rank函数排名之后,结果是:1,1,1,4. dense_rank函数:如果有并列名次的行,不占 ...
- 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法 2020年湖南高考成绩位次全省排名查询...
湖南高考成绩排名查询方法,通过湖南高考的主要是考生,查询自己的排名,计算全省的绩效排名.湖南高考各分数线有多少考生.分数线以上的考生有多少进行详细统计.在填报志愿时间,首先,参考自己在省内的排名,让我 ...
- 山西高考成绩位次查询2021,2020年山西高考位次排名查询 山西高考位次所对应的学校...
山西高考排名是多少,所山西高考状元是指文史类.理工科类学生高考成绩属于省内哪个职位.高考排名可以分为三类:省市排名.区县职级.学衔,引用时,主要在省市县排名,2020山西高考排名查询已在巨力网公布,考 ...
- 2021山西省高考成绩位次查询,山西高考排名查询方法 2020年山西高考成绩位次全省排名查询...
山西省高考成绩排名查询方法,主要是考生通过山西招生考试院公布的当年一分一段表,查询自己的排名,计算全省的绩效排名.山西高考各分数线有多少考生.分数线以上的考生有多少进行详细统计.停留填报志愿时间,首先 ...
- mysql怎么查询排第几名并列_MySQL并列排名和顺序排名查询
准备.创建一张叫scores的表,内容如下.因为测试排名,所以就用最简单的结构.idscore199 280 387 460 580 699 需求.获取分数排名,要求并列排名.如果两个分数相同,则两个 ...
- LeetCode MySQL 178. 分数排名(dense_rank连续排名)
文章目录 1. 题目 2. 解题 1. 题目 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同. 请注意,平分后的下一个名次应该是下一个连续的整数值. 换句话说 ...
- 编写一个 SQL 查询来实现分数排名
每日一题,第一篇 1.编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有" ...
- MySQL实现分数排名问题
数据库记录 mysql> select * from scores; +----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 ...
最新文章
- checkbox管理
- [经验总结]源代码管理=Ubuntu+Apache+SVN
- Android 编译系统分析(一)
- 团队作业_1_博客1(分工理解)
- Lecture 20 Parallel Algorithms I
- E06-libcrypto.so.10 遗失的解决办法
- python之websocket
- STM32F10x随笔(gcc+scons)
- linux 安装org2pg_Ora2Pg的安装和使用
- QT 中控件内坐标转换为父窗口坐标或屏幕坐标
- Gson解析json字符串
- C++:无法打开包括文件:“xxxx.h“
- iOS 修改app名称
- h5调用第三方app (项目开发思路)
- 《Essential C++》学习笔记 第三章:泛型编程风格(一)
- 报错解决 | 重装VS2017报错140.Tools.HostX64.TargetARM.Msi.Reso
- Discuz中标签及相关帖子的设置使用
- 【考研英语语法】强调结构
- 华米Q3财报超预期,智能穿戴设备接替手机狂奔?
- 会java语言可以学seo吗_学习seo和java哪个更有前途?
热门文章
- RMAN高级应用_pizi.pdf
- xp查计算机用户名,XP系统MAC地址查询 XP怎么查看电脑MAC地址?-192路由网
- html5音乐背景图,HTML5 Audio 麦克风操控+钻石背景图案
- nand flash地址机制
- 程序员如何成为别人的男朋友
- VCL语法教程——5.手持式1311编程器的支持
- 程序使用微软雅黑作为默认字体在xp下的问题
- 页面性能优化办法有哪些?
- 红蜘蛛 v6.2.1160解除键鼠屏蔽以及实现窗口化
- python地图 两点距离_使用python计算google地图中两点之间的距离