首页 > 数据库 >MYSQL -- 分数排名

MYSQL -- 分数排名

时间:2023-03-16 15:48:27浏览次数:40  
标签:分数 4.00 -- MYSQL rank score Scores 排名

原题:

  1. 分数排名

中等

1.1K

相关企业
SQL Schema
表: Scores

+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| score | decimal |
+-------------+---------+
Id是该表的主键。
该表的每一行都包含了一场比赛的分数。Score是一个有两位小数点的浮点值。

编写 SQL 查询对分数进行排序。排名按以下规则计算:

分数应按从高到低排列。
如果两个分数相等,那么两个分数的排名应该相同。
在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。
按 score 降序返回结果表。

查询结果格式如下所示。

示例 1:

输入:
Scores 表:
+----+-------+
| id | score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
输出:
+-------+------+
| score | rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+

解析:

  1. 将同一张表引两次,第一张表根据score成绩降序排序,第二张表与第一张表进行比较,COUNT出去重后,大于等于第一张表score的数量,即为该成绩的排名rank
    上代码
SELECT s1.score,COUNT(DISTINCT s2.score) as 'rank'
FROM Scores s1,Scores s2
WHERE s1.score<=s2.score
GROUP BY s1.id
ORDER BY s1.score DESC
  1. MYSQL8.0之后更新了序号函数,该题可直接使用该函数解答
    代码:
SELECT Score ,DENSE_RANK() OVER(ORDER BY Score DESC) as 'rank'
FROM Scores

一步搞定,封装过就是舒服
学习地址: MySQL窗口函教-序号函数(row_number、rank、dense_rank)

标签:分数,4.00,--,MYSQL,rank,score,Scores,排名
From: https://www.cnblogs.com/haipali/p/17222771.html

相关文章

  • Um_nik.
    专业提示--趁着免费的时候得到它们作者:Um_nik,历史,5天前,用英语说在我的辅导下学习时,更多的技巧可以在这里使用。不要再关心评级了除非涉及奖金,否则你在积分榜上......
  • Redis常用命令
    redis数据库一、概述:redis数据库是一个内存数据库,基于内存进行数据存储的,redis数据库访问速度特别快。因此,redis通常被用于缓存系统、存储大量活跃数据,可以极大地提......
  • GPT-4性能炸天:10 秒做出一个网站,考试成绩击败 90% 人类
    GPT-4,吊打ChatGPT!一觉醒来,万众期待的GPT-4,它来了!OpenAI老板SamAltman直接开门见山地介绍道:这是我们迄今为止功能最强大的模型! GPT-4,新功能一览究竟有多强?GPT-4:ht......
  • 新版谷歌Chrome取消对PPAPI插件支持后,浏览器网页打开编辑保存微软Office、金山WPS文档
    最近陆续看到一些大学发布公告,谷歌Chrome取消了对PPAPI插件支持,导致某些在线Office厂家产品将无法在谷歌Chrome107及以上版本运行,被迫更换浏览器或者使用低版本浏览器苟延......
  • vue使用antd-vue框架
    1、首先用npm安装npmi--saveant-design-vue2、在main.js中添加引用import{createApp}from'vue';importAntdfrom'ant-design-vue';importAppfrom'./......
  • “==” 与 equals 区别 简化易懂版
    首先,我们只需要看Object中的equals方法写的是啥 很显然,就是一句话,“==”与equals方法作用完全一致。都是用来比较在内存的首地址,即用来比较两个引用变量是否指向同......
  • Web安全day1
    ##渗透测试​####前期:信息收集####中期:渗透获取一定的权限####后期:权限维持,提权,木马,痕迹擦除 ###渗透测试之信息收集:尽可能收集目标组织的信息,知己知彼####1......
  • buaa面向对象第一单元
    面向对象设计与构造第一单元问题:表达式的化简表达式中仅含有\(x,y,z\)三种未知数表达式仅含有\(+,-,*,**,\sin,\cos,dx,dy,dx\)几种运算-\(dx,dy,dz\)分别表示对\(x......
  • oracle,mysql,sqlserver的in的个数限制
    sqlwherein()里面的个数限制:1、oracleOracle9i中个数不能超过256,Oracle10g个数不能超过10002、sqlserver中个数最大只能到5w3、mysql没有限制,只限制了整......
  • Succession 的 bug
    1、Succession先前有个bug,就是会将动画中的所有物件都先添加到屏幕上,再实施动画,目前这个bug已经被修复(但是没有完全修复)2、但是如果 Succession中存在让物件消失的......