编写一个 SQL 查询来实现分数排名。

如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”

+----+-------+
| Id | Score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+

例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):

+-------+------+
| Score | Rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

解题思路:题目中要求我们给分数排名,也就是说我们要找到每个同学的分数的排名,换个思路,要找到某个同学的排名可以等价为找某个同学的前面有多少个不同的分数。

SELECT count(DISTINCT Score) FROM Scores WHERE Score >= s.Score

给表Scores取别名为s,这条语句的作用假设查询有多少不同的分数比某个同学的高,然后将这条语句作为子查询再次进行查询,然后将得出的查询结果按desc排序就是最后的结果了。

SELECT Score, (SELECT count(DISTINCT Score) FROM Scores WHERE Score >= s.Score) AS 'Rank'
FROM Scores s
ORDER BY Score DESC;

数据库练习:分数排名相关推荐

  1. LeetCode数据库 178. 分数排名

    178. 分数排名 SELECT Score, (SELECT COUNT(DISTINCT(b.Score))# 查看有多少个b.Score大于等于当前的a.ScoreFROM Scores AS ...

  2. DB-Engines 3月数据库排行:排名前十数据库七成分数下降

    DB-Engines 数据库流行度排行榜 3 月更新已发布,排名前二十如下: 排名方面没有任何变动(仅针对前十),相信很长一段时间内也都不会变动,毕竟巨头的位置不是一时半刻就能动摇的.不过这个月的排行 ...

  3. 第一百三十九期:11月数据库排行:排名前三数据库分数暴跌

    DB-Engines 数据库流行度排行榜 11 月更新已发布,与上期数据相比,这期排行榜最大的亮点就是排名前三数据库那引人注目的"红色"分数. 作者:局长 DB-Engines 数 ...

  4. 178.分数排名(数据库)

    178.分数排名(数据库) 题目 示例 解题 方法一 方法二 题目 编写 SQL 查询对分数进行排序.排名按以下规则计算: 分数应按从高到低排列. 如果两个分数相等,那么两个分数的排名应该相同. 在排 ...

  5. leetcode数据库题库-178. 分数排名

    leetcode数据库题库-178. 分数排名https://leetcode-cn.com/problems/rank-scores/题目核心是[重复且连续]的排序 ,排序相关函数简单整理下 一.R ...

  6. leetcode mysql 排名_(LeetCode:数据库)分数排名

    编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔".+- ...

  7. LeetCode力扣刷题数据库(178):分数排名

    178分数排名 表: Scores +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | ...

  8. MySQL实现分数排名问题

    数据库记录 mysql> select * from scores; +----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 ...

  9. java 并列排名,178. 分数排名

    题目描述 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔&qu ...

  10. leetcode 178. 分数排名(SQL)

    编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔". + ...

最新文章

  1. springboot 自定义类配置
  2. 【AGC013D】Pilling Up dp
  3. 如何在Linux下安装PyCharm
  4. c语言数字储存于变量,用C语言写中文数字字符串转数值变量
  5. python成员运算符包括_Python 使用成员运算符案例
  6. 爬虫-post请求练习-百度翻译爬虫-智能的关联搜索不完整词的猜词搜索
  7. Ubuntu 16.04 软件安装
  8. 三相全控tc787触发电路_单相逆变三相交流电源怎么办?变频器的三相交
  9. Java编程的逻辑 (70) - 原子变量和CAS
  10. 转:Scrapy(爬虫框架)入门教程
  11. 文件搜索工具终极大PK挑战赛
  12. html5客户端页面,iphoneX 适配客户端H5页面的方法教程
  13. DTOI 10.25 测试 T3 雪人
  14. word 文档密码 html,Word文档密码解决打开方法
  15. 【MySQL】报错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mys
  16. android app 退出功能,Android 完美退出 App (Exit)
  17. 【尾插法】表尾插入法构造链表 (10 分)
  18. 干货 | 18个 Python 高效编程技巧
  19. java丧尸危机全城爆发_伤尸危机-全城爆发BT版
  20. 关于Java的图标和由来

热门文章

  1. 详解 物理学四大神兽————拉普拉斯兽
  2. IT人二十年后再定位
  3. Gluster源代码阅读3--MGMT Xlator
  4. Microsoft Teams 创建Outlook邮件组的Team
  5. pytho_抓取下载音乐歌曲
  6. 【Fortran】STOP语句
  7. 宽带服务器维护查询,网络连接状态查询方法
  8. BusinessSkinForm VCL
  9. 第二届中国Rust开发者大会议程介绍
  10. Linux 合并两个文件