1.题目描述

编写一个 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 |
+-------+------+

2.思路

  

  以这个id为4的举例,我们需要确定3.85排第几名,是不是只需要确定分数比3.85高的有几个人,那么就可以确定3.85排第几名。

  比如说 比3.85 高的有id为3的和id为5,但他们同为4分,所以我们得根据成绩去重!

3.代码

  

select Score,(select count(distinct Score) from Scores s where s.Score>s1.Score)+1 Rank 
from Scores as s1 order by s1.Score desc

最新文章

  1. webform 复合控件
  2. php套件 wampserver 常见问题
  3. ActiveMQ的初夜
  4. 超全!iOS 面试题汇总
  5. MySQL如何修改root密码
  6. 设置 zend studio 默认编码为UTF8
  7. digitalocean Vultr Linode 三家海外vps最新真实情况
  8. asp.net core系列 52 Identity 其它关注点
  9. Html和Css学习笔记-html进阶-div与span
  10. linux 看执行任务的一些邮件
  11. linux服务基础之DNS正反向解析、主从同步、子域授权及视图
  12. 添加本地jar包到maven仓库
  13. 学习Python第七天
  14. 【Go】IP地址转换:数字与字符串之间高效转换
  15. ionic 3 安卓手机获取经纬度坐标
  16. Mathmatica简介
  17. Expo大作战(三十二)--expo sdk api之Noifications
  18. 怎样使用 fiddler抓取网络数据包?
  19. JAVA中拆箱和装箱
  20. C/C++ 运算符优先级(转载)

热门文章

  1. C语言常用的编程规范
  2. dx.jar文件问题,有没有同学知道怎么解决呀,这一步没法解决,后面就没办法跟着做了
  3. python-list操作
  4. Java设计模式之单例模式,笔记完整到不敢想象
  5. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)
  6. python-函数参数
  7. QQ如何开通在线客服
  8. .Net Core中的Api版本控制
  9. EFCore合并多条迁移记录
  10. VS 2013 professional版在win10上安装出错的解决方法