问题:

Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no "holes" between ranks.

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

数据表:

Create table If Not Exists Scores (Id int, Score DECIMAL(3,2))
Truncate table Scores
insert into Scores (Id, Score) values ('1', '3.5')
insert into Scores (Id, Score) values ('2', '3.65')
insert into Scores (Id, Score) values ('3', '4.0')
insert into Scores (Id, Score) values ('4', '3.85')
insert into Scores (Id, Score) values ('5', '4.0')
insert into Scores (Id, Score) values ('6', '3.65')

解决办法一:

SET @rownum=0;
SELECT a.score,b.rank FROM scores a,(SELECT a.score,@rownum:=@rownum+1 AS rank FROM (SELECT score FROM scores GROUP BY score) aORDER BY a.score DESC) b
WHERE a.Score=b.score
ORDER BY score DESC;

解决办法二:

SELECT a.score,b.rank FROM scores a,(SELECT a.score,@rownum:=@rownum+1 AS rank FROM (SELECT score FROM scores GROUP BY score) a,(SELECT   @rownum:=0)  t2 ORDER BY a.score DESC) b
WHERE a.Score=b.score
ORDER BY score DESC;

解决办法三

SELECTScore,(SELECT count(distinct Score) FROM Scores WHERE Score >= s.Score) Rank
FROM Scores s
ORDER BY Score desc

Rank Scores(分数排序)相关推荐

  1. 分数计算器 C++ 实现分数计算、分数排序

    这是学校作业,做了就直接发上来了. 可以根据自己需要改. #include<iostream> #include<string> #include<vector> ...

  2. C语言实现录入学生信息并按分数排序输出

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  3. php对分数排序,php-MySQL @grouping结果按ID并按分数排序”问题

    我设置了以下数据库格式: id fid name time flag 1 224 Mike 112 3 2 555 John 98 5 3 224 Mike 101 0 4 121 Ann 80 1 ...

  4. Python 请用sorted对上述列表按名字和分数排序

    声明: 我写此文的目的是帮助和我一样在廖雪峰老师官网上学习Python3的同学更好的理解和学习Python的知识,所以本博文及后续文章会跟着我的学习进度来走,主要内容是廖雪峰老师官网Python资料中 ...

  5. c语言 名字 分数排序,C语言 学生成绩排序 按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩...

    满意答案 woaizyb 推荐于 2018.05.24 采纳率:49%    等级:12 已帮助:7953人 #include #include typedef struct student { in ...

  6. 【学习排序】 Learning to Rank中Pointwise关于PRank算法源码实现

    最近终于忙完了Learning to Rank的作业,同时也学到了很多东西.我准备写几篇相关的文章简单讲述自己对它的理解和认识.第一篇准备讲述的就是Learning to Rank中Pointwise ...

  7. Oracle-分析函数之排序值rank()和dense_rank()

    概述 ORACLE函数系列: Oracle常见函数大全 Oracle-分析函数之连续求和sum(-) over(-) Oracle-分析函数之排序值rank()和dense_rank() Oracle ...

  8. oracle 排序值相等排名相等,Oracle-分析函数之排序值rank()和dense_rank()

    概述 ORACLE函数系列: 聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值. 在9i版本之前,只有分析功能(analytic ),即从一个查询结果中计算每一行的排序值 ...

  9. SQL 查询 每个班级第n名 每组第n个 区分 分区 分组排序 DENSE_RANK() RANK() ROW_NUMBER()

    背景 区分/分区/分组排序: 区分多组有序数据中的部分特典数据: 适用场景 前提:有序数据 查询 每组 前N.第N.后N个记录: 排序编号: 分页: 案例(一瓢饮):每个班级第n名 ,有下表(伪数据) ...

  10. SQL中的排序函数【row_number() 、rank() 、dense_rank() 】

    一.SQL中有三种排序函数 1.row_number() over(order by 列名) 2.rank() over(order by 列名) 3.dense_rank() over(order ...

最新文章

  1. It's Time to Say Goodbye (此刻告别)
  2. boost::mpl模块实现copy_if相关的测试程序
  3. SAP Spartacus ProductCarouselComponent
  4. Java Web工程结构_项目结构
  5. NodeJS常用模块介绍
  6. 顶岗实习周记java方向_前途虽远,扶摇可接 | 商务日语专业顶岗实习动员大会...
  7. MCJE魔改材质包教程
  8. 改图宝,快速修改图片大小
  9. 有趣的硬币 java_有趣的硬币作文
  10. 马化腾:灰度法则的七个维度
  11. html和js根据年份计算年龄,JS实现根据出生年月计算年龄
  12. java中倒三角形和正三角形_正三角形,倒三角形,以及正倒三角
  13. C1 驾驶证考试科目二考试心得
  14. 高职对口计算机试题ppt,高职单招中职计算机练习卷和答案.doc
  15. xmind文件不见了处理方法
  16. 前端入门之——html day2
  17. cursor属性(cursor属性hand)
  18. 【读书笔记】《偷影子的人》[法]马克·李维 —— 不想被叫醒的梦
  19. XXL-JOB快速安装使用教程
  20. tool execution canceled by user.

热门文章

  1. Opencv学习笔记 常用函数、基础知识二
  2. java中的jsp是什么?
  3. Jmeter插件安装perfmon(服务器资源监控工具)
  4. 【办公实用网站收集】免费模板
  5. PAAS(platform as a serverce,平台即服务)
  6. 【NLP】第16章 Transformer驱动副驾驶的出现
  7. vue3 自定义指令 directive
  8. 用Python对微信好友进行简单统计分析
  9. 三维空间直角坐标系转换(2)——改进七参数小旋转角的局限
  10. SQL基础教程【日】MICK著 孙淼 罗勇译 ISBN 978-7-115-32269-2