MySQL统计排序,同分数同排名
在一些应用场景中,我们经常会遇到一些排名的问题,比如按成绩、年级、热度排名。排名也有多种排名方式,如直接排名、分组排名,排名有间隔(同维度同排名,排名不连续)或排名无间隔等等。
创建测试表
CREATE TABLE t_scores (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`stu_number` INT ( 11 ) NOT NULL COMMENT '学号',
`score` INT ( 11 ) NOT NULL COMMENT '分数',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;insert into t_scores (stu_number,score) values (1001,89),(1002,99),(1003,96),(1004,96),(1005,92),(1006,90),(1007,90),(1008,94);
普通排名
按分数高低直接排名,从1开始,往下排,类似于row number。下面我们给出查询语句及排名结果。
SELECT stu_number, score, @curRank := @curRank + 1 AS rank
FROM t_scores, (
SELECT @curRank := 0
) r
ORDER BY score desc;
排名无间隔
# 分数相同,名次相同,排名无间隔
# 查询语句
SELECT stu_number, score,
CASE
WHEN @prevRank = score THEN @curRank
WHEN @prevRank := score THEN @curRank := @curRank + 1
END AS rank
FROM t_scores,
(SELECT @curRank :=0, @prevRank := NULL) r
ORDER BY score desc;
间隔排序
# 另外一种排名方式是相同的值排名相同,相同值的下一个名次应该是跳跃整数值,即排名有间隔。
# 查询语句
SELECT stu_number, score, rank FROM
(SELECT stu_number, score,
@curRank := IF(@prevRank = score, @curRank, @incRank) AS rank,
@incRank := @incRank + 1,
@prevRank := score
FROM t_scores, (
SELECT @curRank :=0, @prevRank := NULL, @incRank := 1
) r
ORDER BY score desc) s;
MySQL统计排序,同分数同排名相关推荐
- mysql++月份排序_Mysql 按月份为组进行统计排序_MySQL
SELECT YEAR(established_time) AS 'year' , MONTH(established_time) AS 'month' , COUNT(*) AS 'count' F ...
- mysql不同分数的人数,mysql如何统计每个专业分数段的人数
mysql如何统计每个专业分数段的人数 发布时间:2020-03-20 15:02:26 来源:亿速云 阅读:532 作者:小新 mysql如何统计每个专业分数段的人数的呢?下面由亿速云小编给大家详细 ...
- 【MySQL】排序、合计、统计、平均值、最大值、最小值
目录 MySQL的排序:order by MySQL的统计:count MySQL的合计:sum MySQL的平均值:avg MySQL的最大值.最小值:max,min 一.MySQL的排序:orde ...
- mysql 统计每人每年1-12月个个月的分数和总分、平均分
mysql 统计每人每年1-12月个个月的分数和总分.平均分 初始化数据 DROP TABLE IF EXISTS `test_01`; CREATE TABLE `test_01` (`id` in ...
- 【MySQL】按各科成绩进行排序,并显示排名
按各科成绩进行排序,并显示排名 select s_id,a.c_id,c_name,s_score,rank from ( select s_id,c_id,s_score, case when c_ ...
- mysql查询和某人一样_使用sql语句实现查询某人的排名,分数相同排名相同
一.第一种形式排名 如:4个学生的分数分别是:100.90.90.80 排名结果为:第一.第二.第二.第三 SELECT count(DISTINCT score) FROM tbl_score WH ...
- SQL server 和 mysql 自动排序生成序列号
mysql和sqlserver都是数据库有关的 mysql适合小型的数据库开发,而且免费开源的,一般和PHP一起开发小型企业或者个人网站一类的应用 sqlserver是微软开发的数据库软件,需要收费, ...
- linux日志中有空格,linux中统计排序的内容含有空白行的解决办法
linux中统计排序的内容含有空白行的解决办法 废话不多说,直接上实例: 文件 sharkyun.log 的内容如下 [root@x201t ~]# cat -n sharkyun.log 1http ...
- MySQL || 结果排序--聚集函数讲解
MySQL 结果排序-- 聚集函数 一.环境准备 二.查询结果排序 三.查询的分组与汇总 3.1.查一下 学生们平均年龄 3.2.查一下总人数是多少 3.3.查一下每个年龄有多少人 3.4.查出最大年 ...
最新文章
- Oracle 数据库中较为复杂或典型的 SQL 语句的解读
- 帝国cms如何安装php模板,2020帝国cms模板安装教程详细介绍
- Bootstrap三角箭头.caret 类
- 计算机辅助平面绘图是干嘛的,【1人回答】AutoCAD画图是什么,干什么用的?-3D溜溜网...
- 题目1120:全排列(回溯法)
- new delete 来申请动态二维数组空间
- 蓝色妖姬 t3200 linux连接
- Web票据在线打印和套打解决方案
- ptx760功能图解_ptx760对讲机使用教程
- 计算机《画图》教案学生状态,《初识“画图”》教案设计.doc
- Java开发面试简历这么写,命中率达70%
- mysql egt_ThinkPHP常用的运算符介绍eq|neq|gt|egt|lt|elt|heq|nheq
- 手机HTML拼图验证,jQuery支持移动端的滑动块拼图验证插件
- Linux系统下Jsp验证码显示不出来, nginx 返回500 解决方法
- php lumen auth,Lumen实现用户注册登录认证
- MS-RTOS --- 技术特点及其检测标准
- Linux系统磁盘分区及挂载 - fdisk
- Objective-C学习资源
- 2009年网易笔试题
- Python安装opencc