2025年--Lc172--H178 .分数排名(SQL)--Java版

1.题目


2.思路

(1)将 Scores 表与自身连接,以便我们得到所有分数大于或等于此分数的所有行。

(2)将查询行按 id 和 score 值进行分组。

(3)计算唯一的分数的数量,它应该大于或等于连接条件中使用的分数(也就是排名)。

(4)按 score 值对结果集进行排序。

补充

COUNT(DISTINCT T.score):对当前分组下(由外层表 S 的每个分数确定)的连接结果里,统计 不重复的分数个数。DISTINCT 的意思是:去重。在 SQL 里用来把重复的值或重复的整行只保留一份。

AS 'rank':把这一统计结果的列名起别名叫 rank(在 MySQL 里用单引号也能起别名,更推荐写成 AS rank 或 AS rank )。

3.代码实现

sql 复制代码
select 
S.score ,
Count(DISTINCT T.score) AS 'rank'
from
Scores S
INNER JOIN Scores T on S.score<=T.score
GROUP BY
S.id,
S.score
Order By
S.score Desc;
相关推荐
CHANG_THE_WORLD15 小时前
switch case 二分搜索风格
前端·数据库
m0_5981772315 小时前
SQL核心(1)
数据库·sql
DarkAthena15 小时前
【ORACLE】分区表数据倾斜会发生什么
数据库·oracle
indexsunny15 小时前
互联网大厂Java求职面试实战:微服务与Spring Boot在电商场景中的应用
java·数据库·spring boot·微服务·kafka·hibernate·电商
DarkAthena15 小时前
【GaussDB】数据静止状态下同一个SQL或同一个存储过程执行第6次报错的问题排查
数据库·sql·gaussdb
huwei85315 小时前
QT 连接数据库类
数据库·qt·oracle
l1t15 小时前
郭其先生利用DeepSeek实现的PostgreSQL递归CTE实现DFS写法
sql·算法·postgresql·深度优先
尽兴-15 小时前
MySQL 中一条 SQL 的执行流程详解
sql·mysql·adb·dba
wangbing112516 小时前
平台介绍-开放API后台微服务
数据库·微服务·架构
高一要励志成为佬16 小时前
【数据库】第三章 关系数据库标准语言SQL
数据库·sql