问题:编写一个 SQL 查询来实现评分排名。如果两个分数相同,则两个分数排名(Rank)相同。

评分表ratings

方法一:不运用dense_rank(),运用子查询

解决这一问题可以分为两个步骤:

步骤一:降序排列分数

select a.Rating as Rating from ratings a order by a.Rating DESC;

步骤二:每个评分对应的排名

思路:可以先提取出大于等于X的所有分数集合H,将H去重后的元素个数就是X的排名。

先提取集合H:

select b.Rating from ratings b where b.Rating>= X;

再求出集合H去重之后的元素个数:

select count(distinct b.Score) from Scores b where b.Score >= X as Rank;

最终将两个步骤结合:

select a.Rating as Rating,

(select count(distinct b.Rating) from ratings b where b.Rating >= a.Rating) AS "Rank"

from ratings a order by a.Rating DESC;

方法二:运用dense_rank()

select Rating, dense_rank() over (order by Rating desc) as "Rank" from ratings;

附:mysql中Rank()和dense_rank()的区别

不同点:RANK()是跳跃排序,即如果有两条记录重复,接下来是第三级别

如:1 2 2 4,会跳过3

DENSE_RANK()是连续排序,即如果有两条记录重复,接下来是第二级别

如:1 2 2 3

mysql 经典问题_mysql经典排名问题相关推荐

  1. mysql的题目_mysql经典例题

    MYSQL上机题 1. 使用sql语句创建数据库,名称为CustomDB 2. 创建数据表customer(客户).deposite(存款).bank(银行),表结构如下:(10分) customer ...

  2. mysql经典语句_Mysql经典语句

    一.查看当前的数据库:     SHOW DATABASES; 二.查看当前数据库中的所有表: SHOW TABLES; 三.创建一个新的数据库:CREATE DATABASE数据库名; 四.启动和停 ...

  3. mysql并列查询_MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码...

    前言 本文主要介绍了关于mysql实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 表结构: create table test ...

  4. 《PHP、MySQL和Apache入门经典(第5版)》一2.11 实践练习

    本节书摘来自异步社区<PHP.MySQL和Apache入门经典(第5版)>一书中的第2章,第2.11节,作者[美]Julie C. Meloni,更多章节内容可以访问云栖社区"异 ...

  5. MySQL UPDATE 语句一个“经典”的坑

    转载自  MySQL UPDATE 语句一个"经典"的坑 来源:ju.outofmemory.cn/entry/336774 有问题的SQL语句 why? 倒回去再重试验一把 最近 ...

  6. 《PHP、MySQL和Apache入门经典(第5版)》一2.7 基本安全规则

    本节书摘来自异步社区<PHP.MySQL和Apache入门经典(第5版)>一书中的第2章,第2.7节,作者[美]Julie C. Meloni,更多章节内容可以访问云栖社区"异步 ...

  7. MySQL的10大经典错误

    MySQL的10大经典错误 Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行) 解决问题的思路: 首先先要考虑在我们 MySQL 数据库参数文件里 ...

  8. mysql历史命令_MySQL交互技巧

    本文介绍一些与客户端程序mysql进行交互的技巧,这些技巧能帮助我们更有效率地使用它,减少文字输入.此外,还会描述"怎样更加方便地连接到服务器",以及"如何在不经手工输入 ...

  9. mysql 添加列_mysql中添加列、修改列、删除列的方法

    本节内容: ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 操作语句: 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列 ...

最新文章

  1. 第九章 Django框架——csrf请求伪造和csrf_token使用
  2. Allegro禁布区打过孔或走线消除DRC错误
  3. Linux基础--虚拟机的控制及linux系统的基本操作
  4. python快递分拣小程序_python英语单词测试小程序代码实例
  5. 重磅来袭,2018 年 6 月编程语言排行榜
  6. MySQL中的常用函数
  7. win7 64位运行不了服务器,G6-e标准包可以装在win7 64位系统上吗?现在提示不能登陆到服务器...
  8. IFRAME跨域名的解决方法,终结版(小张.NET原创)
  9. maven 绑定html压缩,Maven使用yuicompressor-maven-plugin打包压缩css、js文件
  10. mysql会话是什么意思_MySQL会话临时表空间有什么作用
  11. 如何把网页保存为PDF
  12. 计算机主机和音箱的接口电路,Zigbee协议与USB主机无线音箱电路设计
  13. WLAN驱动分析文档
  14. SpringBoot apple苹果支付回调验证
  15. 如何将视频从横屏转为竖屏?
  16. [技术分享]-Servlet/tomcat/spring mvc之间关系
  17. ChinaSoft 论坛巡礼 | 程序设计教育论坛
  18. 逻辑回归优化算法总结一
  19. 《我是一只IT小小鸟》读书笔记(2)
  20. 计算机网络学习笔记(三)——网络核心、接入网与物理媒体

热门文章

  1. python连接oracle视频教程_python怎么连接oracle
  2. 蓝牙驱动卸载后自动安装_智能产品 | 安装水循环系统后,全自动洗车机洗车会更节水吗?...
  3. Oracle数据库用户失效对象,Oracle数据库对象失效解决
  4. array_multisort - 如何保持键值,不重置键值,键名保持不变
  5. Android好评功能,Android应用评分功能的实现
  6. python3 yield 大文件_详解Python3中yield生成器的用法
  7. oracle 性别默认是男_被实名举报“制造性别对立”的杨笠,到底冤不冤?
  8. logback 的 filter
  9. RedHat7.0启动后黑屏
  10. python自关联_Django之Mode的外键自关联和引用未定义的Model方法