当前位置: 首页 > news >正文

力扣-分数排名

大家好,我是空空star,本篇带你了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:178. 分数排名
  • 二、解题
    • 1.错误示范①
      • 提交SQL
      • 运行结果
    • 2.错误示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范①
      • 提交SQL
      • 运行结果
    • 4.正确示范②
      • 提交SQL
      • 运行结果
    • 5.正确示范③
      • 提交SQL
      • 运行结果
    • 6.其他
  • 总结


前言


一、题目:178. 分数排名

表: Scores

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

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

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

按 score 降序返回结果表。

查询结果格式如下所示。

二、解题

1.错误示范①

提交SQL

select score,row_number() over(order by score desc ) 'rank'
from Scores

运行结果

错在了两个分数相等时,两个分数的排名不相同。

2.错误示范②

提交SQL

select score,
rank() over(order by score desc) 'rank'
from Scores

运行结果

错在排名之间有空缺的数字

3.正确示范①

提交SQL

select u1.score,u2.col 'rank'
from Scores u1
left join (select score,row_number() over(order by score desc ) colfrom(select distinct score from Scores) a
) u2
on u1.score=u2.score
order by u2.col   

运行结果

按照计算好的排名升序

left join 也可以改为join

4.正确示范②

提交SQL

select u1.score,u2.col 'rank'
from Scores u1
join (select score,row_number() over(order by score desc ) colfrom(select distinct score from Scores) a
) u2
on u1.score=u2.score
order by u1.score desc

运行结果

按照分数降序

5.正确示范③

提交SQL

select score,
dense_rank() over(order by score desc) 'rank'
from Scores

运行结果

dense_rank函数的功能与rank函数类似,dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。dense_rank函数出现相同排名时,将不跳过相同排名号,rank值紧接上一次的rank值。在各个分组内,rank()是跳跃排序,有两个第一名时接下来就是第三名,dense_rank()是连续排序,有两个第一名时仍然跟着第二名。

6.其他


总结

row_number:顺序排序
rank:并列排序,会跳过重复的序号,比如序号为1、1、3
dense_rank:并列排序,不会跳过重复的序号,比如序号为1、1、2

http://www.lryc.cn/news/10181.html

相关文章:

  • 图文详解Ansible中的变量及加密
  • silicon labs平台通过串口升级固件方案
  • MySQL 派生表产生关联索引auto_key0导致SQL非常的慢
  • 计算机网络期末复习汇总(附某高校期末真题试卷)
  • 2月,还是不要跳槽
  • 科技爱好者周刊之爱好者记录
  • C++入门:函数重载
  • 每天10个前端小知识 【Day 16】
  • 23美赛D题:确定联合国可持续发展目标的优先级(ICM)思路Python代码
  • 高校房产管理系统有哪些管理功能范围?
  • ACM MM 相关内容的整理+汇总
  • 前段时间公司招人,面了一个要20K的,一问自动化只会点皮毛···
  • 链表:反转链表、快慢指针、删除链表【零神基础精讲】
  • SQlServer 定时执行sql语句作业的制定
  • Windows安装VMware虚拟机+配置Ubuntu的详细步骤以及解决配置过程中报错的问题(完整版)
  • 103.第十九章 MySQL数据库 -- MySQL的备份和恢复、MySQL主从复制(十三)
  • SSH免密登录以及IP别名配置(保姆级教程)
  • 测试开发之Django实战示例 第十二章 创建API
  • Yakit实战技巧:用MITM热加载任意修改流量
  • 如何搭建自己的MQTT服务器?跟我来,一行代码搞定!
  • 遇到的问题
  • 线程没有被终止的异常的处理
  • RocketMQ 初步了解
  • Mac下PyCharm快捷键
  • 城市管网监测系统,保障城市血管生命线!
  • Web3中文|1月数据显示复苏迹象,涉及NFT、DeFi、Dapp、链游……
  • MySQL索引的介绍以及优缺点
  • Java_小项目书城
  • Unreal Engine08:Pawn的实现
  • 408强化(二)线性表纯享版