美文网首页
MySQL分类排名问题

MySQL分类排名问题

作者: 一梦三四年lyp | 来源:发表于2020-05-08 18:11 被阅读0次

实现对学生按课程依成绩高低进行排序

建表:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `course` varchar(20) DEFAULT NULL,
  `score` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

数据:

1   张三  语文  80
2   李四  语文  90
3   王五  语文  93
4   张三  数学  77
5   李四  数学  68
6   王五  数学  99
7   张三  英语  90
8   李四  英语  50
9   王五  英语  89

子查询

SELECT
    *, (
        SELECT
            COUNT(b.score) + 1
        FROM
            test b
        WHERE
            a. NAME = b. NAME
        AND a.score < b.score
    ) AS 'rank'
FROM
    test a
ORDER BY
    NAME,
    rank

查询结果:
7   张三  英语  90  1
1   张三  语文  80  2
4   张三  数学  77  3
2   李四  语文  90  1
5   李四  数学  68  2
8   李四  英语  50  3
6   王五  数学  99  1
3   王五  语文  93  2
9   王五  英语  89  3

自连接

SELECT 
    a.*, COUNT(b.score)+1 AS 'rank'
FROM 
    test a LEFT JOIN test b ON (a.name = b.name  AND a.score < b.score)
GROUP BY 
    a.name, a.score,a.course
ORDER BY 
    a.name, COUNT(b.score) asc

查询结果:
7   张三  英语  90  1
1   张三  语文  80  2
4   张三  数学  77  3
2   李四  语文  90  1
5   李四  数学  68  2
8   李四  英语  50  3
6   王五  数学  99  1
3   王五  语文  93  2
9   王五  英语  89  3

参考:
https://mp.weixin.qq.com/s/s8EiV-oKNR4n9Goe4gIAOw

相关文章

  • MySQL分类排名问题

    实现对学生按课程依成绩高低进行排序 建表: 数据: 子查询 自连接 参考:https://mp.weixin.qq...

  • mysql排名问题

    由于mysql不支持rank函数,所以mysql的排名只能通过其他方式实现。创建表并插入记录: 1、查询每门功课成...

  • mysql经典排名问题

    问题:编写一个 SQL 查询来实现评分排名。如果两个分数相同,则两个分数排名(Rank)相同。 方法一:不运用de...

  • 在MySQL中实现Rank高级排名函数

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽...

  • 在MySQL中实现Rank高级排名函数 风澈vio

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽...

  • mysql 排名

    现在有一个 scores 积分表,记录用户的积分 现在要对积分进行排名,并计算用户的名次 这段 sql 的意思就是...

  • (5)锁机制与InnoDB锁算法

    一 锁分类(按照锁的粒度分类) Mysql为了解决并发、数据安全的问题,使用了锁机制。 可以按照锁的粒度把数据库锁...

  • 查询获取排名

    参考 mysql 查询获取排名的方法(绝对有效)

  • 【转】mysql中key 、primary key 、uniqu

    mysql中key 、primary key 、unique key 与index区别 博客分类: mysql基础...

  • MySQL 实现排名(分组排名)

    在MYSQL的最新版本MYSQL8已经支持了排名函数RANK,DENSE_RANK和ROW_NUMBER。但是在5...

网友评论

      本文标题:MySQL分类排名问题

      本文链接:https://www.haomeiwen.com/subject/etxqnhtx.html