力扣-Mysql-3252-英超积分榜排名 II(中等)

一、题目来源

3252. 英超积分榜排名 II - 力扣(LeetCode)

二、数据表结构

表:TeamStats

+------------------+---------+
| Column Name      | Type    |
+------------------+---------+
| team_id          | int     |
| team_name        | varchar |
| matches_played   | int     |
| wins             | int     |
| draws            | int     |
| losses           | int     |
+------------------+---------+
team_id 是这张表的唯一主键。
这张表包含队伍 id,队伍名,场次,赢局,平局和输局。



三、需求

编写一个解决方案来计算联盟中每支球队的 得分排名 和 等级。积分计算方式如下:

  • 赢局 有 3 点得分
  • 平局 有 1 点得分
  • 输局 有 0 点得分

注意:积分相同的球队必须分配相同的排名。

等级评级:

  • 根据积分将联盟分为 3 个等级:
  • 等级 1:前 33% 的队伍
  • 等级 2:中间 33% 的队伍
  • 等级 3:最后 34% 的队伍
  • 如果等级边界出现平局,平局的队伍分配到更高的等级。

返回结果表以 points 降序 排序,然后以 team_name 升序 排序。

四、示例数据

输入:

TeamStats 表:

+---------+-------------------+----------------+------+-------+--------+
| team_id | team_name         | matches_played | wins | draws | losses |
+---------+-------------------+----------------+------+-------+--------+
| 1       | Chelsea           | 22             | 13   | 2     | 7      |
| 2       | Nottingham Forest | 27             | 6    | 6     | 15     |
| 3       | Liverpool         | 17             | 1    | 8     | 8      |
| 4       | Aston Villa       | 20             | 1    | 6     | 13     |
| 5       | Fulham            | 31             | 18   | 1     | 12     |
| 6       | Burnley           | 26             | 6    | 9     | 11     |
| 7       | Newcastle United  | 33             | 11   | 10    | 12     |
| 8       | Sheffield United  | 20             | 18   | 2     | 0      |
| 9       | Luton Town        | 5              | 4    | 0     | 1      |
| 10      | Everton           | 14             | 2    | 6     | 6      |
+---------+-------------------+----------------+------+-------+--------+

输出:

+-------------------+--------+----------+---------+
| team_name         | points | position | tier    |
+-------------------+--------+----------+---------+
| Sheffield United  | 56     | 1        | Tier 1  |
| Fulham            | 55     | 2        | Tier 1  |
| Newcastle United  | 43     | 3        | Tier 1  |
| Chelsea           | 41     | 4        | Tier 1  |
| Burnley           | 27     | 5        | Tier 2  |
| Nottingham Forest | 24     | 6        | Tier 2  |
| Everton           | 12     | 7        | Tier 2  |
| Luton Town        | 12     | 7        | Tier 2  |
| Liverpool         | 11     | 9        | Tier 3  |
| Aston Villa       | 9      | 10       | Tier 3  |
+-------------------+--------+----------+---------+

解释:

  • 谢菲尔德联队拿下 56 分(18 胜 * 3 分 + 2 平 * 1 分)位列第 1。
  • 富勒姆拿下 55 分(18 胜 * 3 分 + 1 平 * 1 分)位列第 2。
  • 纽卡斯尔联队拿下 43 分(11 胜 * 3 分 + 10 平 * 1 分)位列第 3。
  • 切尔西拿下 41 分(13 胜 * 3 分 + 2 平 * 1 分)位列第 4。
  • 伯恩利拿下 27 分(6 胜 * 3 分 + 9 平 * 1 分)位列第 5。
  • 诺丁汉森林拿下 24 分(6 胜 * 3 分 + 6 平 * 1 分)位列第 6。
  • 埃弗顿和卢顿镇均拿下 12 分,埃弗顿 2 胜 * 3 分 + 6 平 * 1 分,卢顿镇 4 胜 * 3 分。两支队伍并列位列第 7。
  • 利物浦拿下 11 分(1 胜 * 3 分 + 8 平 * 1 分)位列第 9。
  • 阿斯顿维拉拿下 9 分(1 胜 * 3 分 + 6 平 * 1 分)位列第 10。

等级计算:

  • 等级 1:根据积分排名前 33% 的球队。谢菲尔德联队、富勒姆、纽卡斯尔联队和切尔西属于等级 1。
  • 等级 2:中间 33% 的球队。伯恩利、诺丁汉森林、埃弗顿和卢顿镇属于等级 2。
  • 等级 3:垫底 34% 的球队。利物浦和阿斯顿维拉落入等级 3。



五、分析


1.文字分析
 

第一步:计算每支球队的得分:wins*3+draws,再跟据球队得分的降序进行排名,积分相同的球队必须分配相同的排名,所以使用rank()函数进行排名;

第二步:获取参加比赛的球队总数;

第三步:使用case when进行条件判断,对每支球队进行等级划分。

2.图解


六、代码实现

with t1 AS (SELECTteam_name,wins *  3 + draws as points,rank() OVER (ORDER BY  wins* 3 + draws desc) positionfrom TeamStats),t2 AS (SELECTcount(team_id) as totalfrom TeamStats
)
selectt1.*,(CASEwhen position <= ceiling(total * 0.33) THEN 'Tier 1'when position > ceiling(total * 0.33) and position <= ceiling(total * 0.66) then 'Tier 2'ELSE 'Tier 3'end) as tier
from t1,t2
ORDER BY points desc , team_name;



七、总结
 

本题需求为获取英超球队积分榜排名;

本题没有太难思考的点,唯一要注意的是在进行等级划分时,不可能将球队分割,所以要选择是向上取整还是向下取整,本题选择的是向上取整函数--ceiling()函数;

Ceiling() 函数是一个数学函数,用于向上取整。它返回大于或等于给定数字的最小整数。

语法为:ceiling(x),其中 是要进行向上取整操作的数值表达式,可以是一个数字、一个包含数字的列或者是一个能返回数字的表达式。

因为积分相同的球队必须分配相同的排名,所以要选择使用 rank() 排名函数,结果是 存在并列排名但排名不连续的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16137.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

用Python设置PowerPoint幻灯片背景

使用Python自动化处理Office文档&#xff0c;如PowerPoint演示文稿&#xff0c;是提高效率和创造力的重要手段。设置PowerPoint幻灯片背景不仅能够增强演示文稿的视觉吸引力&#xff0c;还能帮助传达特定的情感或信息&#xff0c;使观众更加投入。通过编程方式批量修改幻灯片背…

商业物联网详细指南:优势与挑战

物联网是信息技术行业最具前景的领域之一。为什么它如此热门呢&#xff1f;原因在于全球连接性。设备可以像人群一样相互协作。正如我们所知&#xff0c;协作能显著提高生产力。 物联网对普通用户和企业都有益处。许多日常流程可以通过传感器、扫描仪、摄像头和其他设备实现自…

国际专线网络:助力企业全球化转型的关键技术

随着全球经济一体化进程的加速&#xff0c;企业的业务和市场拓展逐渐跨越国界&#xff0c;国际化发展成为企业提高竞争力、拓展业务的重要战略。然而&#xff0c;在跨国运营中&#xff0c;如何确保信息传输的效率、稳定性与安全性&#xff0c;成为企业面临的一大挑战。传统的公…

C2工具vshell最新4.9.3版下载(带永久license)

简介 vshell 是一款安全对抗模拟、红队工具。提供隧道代理和隐蔽通道&#xff0c;模拟长期潜伏攻击者的策略和技术。vshell 为您提供隧道代理和隐蔽通道&#xff0c;以模拟网络中的持久化攻击行为。支持多种协议、高兼容性、及强大的协作能力&#xff0c;帮助蓝队更好的评估安…

你觉得应该怎样阅读文献?

阅读文献这件小事儿&#xff0c;说简单也简单&#xff0c;说复杂也挺烧脑的。我个人觉得&#xff0c;要想把这事儿做得游刃有余&#xff0c;得有点儿“代入感”和“侦探精神”才行。 首先&#xff0c;别把文献当敌人&#xff0c;把它看成是一位智者&#xff0c;它有很多故事和…

云消息队列演进与AI赋能

大家好&#xff0c;我是袁庭新。 常用的消息队列产品有RocketMQ、Kafka、RabbitMQ、MQTT等&#xff0c;现都已实现Serverless化&#xff0c;支持自适应弹性&#xff0c;能够秒级扩展以满足业务流量的变化。这个模块来介绍下云消息队列演进与AI赋能&#xff0c;如何面向企业提供…

什么是MedGraphRAG?一文解读MedGraphRAG原理、现状、展望

MedGraphRAG 是一个专门为医学领域设计的检索增强生成&#xff08;RAG, Retrieval-Augmented Generation&#xff09;框架&#xff0c;它结合了知识图谱和大规模语言模型的优势&#xff0c;旨在提高医学信息生成的准确性、相关性和可解释性。以下是对 MedGraphRAG 的详细介绍&…

【进程概念精讲】

Susan,在那命运月台前面&#xff0c;再上车&#xff0c;春天开始落叶.................................................................. 文章目录 前言 一、【认识进程】 1、【进程基本概念引入】 2、【进程的描述与组织——进程控制块&#xff08;PCB&#xff09;与进程…

Timeline动画「硬切」的问题

1&#xff09;Timeline动画「硬切」的问题 2&#xff09;移动平台纹理压缩格式选择ASTC&#xff0c;美术出图还需遵守POT吗 3&#xff09;如何去掉DOTS Unity.Entities.Graphics创建的BatchRendererGroup的UI相机回调 4&#xff09;Timeline播放动画会产生位移的问题 这是第409…

Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)

目录 一、模型的定义二、数据迁移三、数据表关系四、数据表操作4.1 Shell工具4.2 数据新增4.3 数据修改4.4 数据删除4.5 数据查询 Django 对各种数据库提供了很好的支持&#xff0c;包括 PostgreSQL、MySQL、SQLite 和 Oracle&#xff0c;而且为这些数据库提供了统一的 API 方法…

第T7周:Tensorflow实现咖啡豆识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: &#xff08;二&#xff09;具体步骤 1. 使…

10多条视频涨70万粉,AI猫猫视频实战教程,一篇文章教会你

本文背景 “每个爆款出现的背后&#xff0c;都有一个先驱会倒下。”爆款作者可能不会告诉你的原因是“其实我也是通过XX视频的灵感,突然创作的” 先看看案例&#xff0c;这个账号1月20号注册&#xff0c;只发了10多个视频&#xff0c;居然涨粉70万。 抖音上也有类似博主靠这个方…

超全大模型常见面试题(附答案)

大模型相关的面试问题通常涉及模型的原理、应用、优化以及面试者对于该领域的理解和经验。以下是一些常见的大模型面试问题以及建议的回答方式&#xff1a; 请简述什么是大模型&#xff0c;以及它与传统模型的主要区别是什么&#xff1f; 回答&#xff1a;大模型通常指的是参…

深入浅出Word2Vec:从原理到实战,如何利用词嵌入提升NLP应用

深入浅出Word2Vec&#xff1a;从原理到实战&#xff0c;如何利用词嵌入提升NLP应用 引言&#xff1a;为什么Word2Vec如此重要&#xff1f; 自然语言处理&#xff08;NLP&#xff09;作为人工智能中的核心领域&#xff0c;面临着如何将人类语言转化为机器可以理解的形式的问题。…

Reddit 舞台上的 AI:解码用户生活密码,隐私警钟敲响

前言 在这篇探讨人工智能&#xff08;AI&#xff09;如何推测Reddit用户生活细节的文章中&#xff0c;我们目睹了一种前所未见的技术力量&#xff0c;它巧妙地从看似平常的社交媒体帖子中提取出用户的个人背景——居住地和收入水平。这一研究不仅揭示了AI在数据分析上的精细能…

【c++笔试强训】(第八篇)

目录 孩⼦们的游戏&#xff08;约瑟夫环&#xff09; 题目解析 讲解算法原理 编写代码 ⼤数加法&#xff08;⾼精度加法&#xff09; 题目解析 讲解算法原理 编写代码 孩⼦们的游戏&#xff08;约瑟夫环&#xff09; 题目解析 1.题目链接&#xff1a;孩子们的游戏(圆…

Comfy UI Docker 镜像构建

镜像的构建会需要科学上网&#xff0c;不会的人&#xff0c;最好的方式就是花钱购买境外服务器。 本文使用&#xff1a; Windwos 11 WSL &#xff08;Ubuntu22.04&#xff09; 进行镜像构建&#xff0c;使用 Clash 代理。 读者相同环境&#xff0c;实现代理需要两项配置 - 配…

PaoluGPT——千里挑一

开启题目&#xff1a; 点击“开始聊天”&#xff0c;发现已经跑路&#xff1a; 点击“查看聊天记录”&#xff0c;会发现一大堆聊天记录&#xff1a; 聊天记录在/list目录下 点两个具体的聊天记录&#xff0c;发现地址栏中URL发生变化&#xff0c;都是 /view?conversation_id…

conda创建 、查看、 激活、删除 python 虚拟环境

1、创建 python 虚拟环境 ,假设该环境命名为 “name”。 conda create -n name python3.11 2、查看 python 虚拟环境。 conda info -e 3、激活使用 python 虚拟环境。 conda activate name 4、删除 python 虚拟环境 conda remove -n name --all ​​ 助力快速掌握数据集…

从0开始的STM32学习之旅之定时器3:高级定时器

目录 重复计数器 输出比较 断路功能 输出比较模式 互补输出带死区控制 死区时间计算 PWM 输入模式 高级定时器的框图和通用定时器框图很类似&#xff0c;只是添加了其它的一些功能&#xff0c;如&#xff1a;重复计数 器、带死区控制的互补输出通道、断路输入等 可以认为…