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;
相关推荐
阿维的博客日记3 分钟前
Redis的旁路缓存策略和先删除缓存后更新数据库,先更新数据库后删除缓存,这三种策略之间有什么关系??
数据库·redis·缓存
ictI CABL20 分钟前
redis连接服务
数据库·redis·bootstrap
苍煜27 分钟前
SpringBoot单体应用到分布式下的数据库锁、事务、Redis事务、分布式锁、分布式事务协调
数据库·spring boot·分布式
xmjd msup1 小时前
mysql的分区表
数据库·mysql
Lyyaoo.1 小时前
【JAVA Spring面经】Spring 事务失效情况
java·数据库·spring
MeAT ITEM1 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
dovens1 小时前
PostgreSQL 中进行数据导入和导出
大数据·数据库·postgresql
IOT.FIVE.NO.11 小时前
claude code desktop cowork报错解决和记录Workspace..The isolated Linux environment ...
linux·服务器·数据库
Rick19931 小时前
mysql 慢查询怎么快速定位
android·数据库·mysql
科技小花8 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化