专栏首页小六mysql 查询出成绩表排名,两种实现方式

mysql 查询出成绩表排名,两种实现方式

数据表,来自leetcode

Create table If Not Exists Scores (Id int, Score DECIMAL(3,2))
Truncate table Scores
insert into Scores (Id, Score) values ('1', '3.5')
insert into Scores (Id, Score) values ('2', '3.65')
insert into Scores (Id, Score) values ('3', '4.0')
insert into Scores (Id, Score) values ('4', '3.85')
insert into Scores (Id, Score) values ('5', '4.0')
insert into Scores (Id, Score) values ('6', '3.65')

方式一:

SELECT Score,
        CASE
          WHEN @fs = Score THEN @pm
          WHEN @fs := Score THEN @pm := @pm + 1
          END Rank
FROM Scores1,
     (SELECT @pm := 0,@fs := null) a
ORDER BY Score DESC;

方式二:

SELECT a.Score, SUM(CASE WHEN b.Score >= a.Score THEN 1 END)
FROM Scores1 a,
     (SELECT DISTINCT Score FROM Scores1) b
GROUP BY a.id,a.Score
ORDER BY a.Score DESC;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 欧拉计划——特殊毕达哥拉斯三元组

    有且只有一个毕达哥拉斯三元组满足 a + b + c = 1000。求这个三元组的乘积abc。

    lop
  • 欧拉计划十四——最长考拉兹序列

    13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

    lop
  • SQL题目50道 持续更新

    lop
  • 蛋白质组学第8期 文章复现之数据处理

    引用自(https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154)

    生信技能树
  • C++之类(一)

    在C++之中,我们使用类来定义自己的数据类型。通过自定义数据类型,可以使我们的编程变得更加方便。或者说C++设计类的目的就是为了使我们可以像使用基本数据类型一样...

    zy010101
  • 05.记录合并&字段合并&字段匹配1.记录合并2.字段合并3.字段匹配3.1 默认只保留连接上的部分3.2 使用左连接3.3 使用右连接3.4 保留左右表所有数据行

    将两个结构相同的数据框合并成一个数据框。 函数concat([dataFrame1, dataFrame2, ...])

    用户1250179
  • 3岁制作内燃机,7岁发明机器人,这个印度小孩要逆天

    我还记得我7岁的时候,哥哥用穿旧的拖鞋裁出两只木头轮子,又找到一根长长的木头棍子和木头方向盘给我做了个玩具汽车,我拿着小汽车兴高采烈地在小巷中乱窜。那时候我还看...

    机器人网
  • sql基础知识:分页+排序

    Oracle的分页还真是挺恶心地,不像mysql直接Limit就搞定 select name from student limit 0,20; Oracle需要...

    用户1154259
  • MySQL使用on duplicate key update时导致主键不连续自增

    在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,比如

    JouyPub
  • 【答疑解惑】Java中的默认构造器和equals方法

    有一些网友在学习Java基础知识是遇到一些问题小编来解答一下。 1、Java中的默认构造器: 在Java中你要创建一个对象肯定会调用new语句来创建一个对象,在...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券