一,题目描述

178. 分数排名

难度中等891

SQL架构

表: Scores

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

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

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

按 score 降序返回结果表。

查询结果格式如下所示。

示例 1:

输入:
Scores 表:
+----+-------+
| id | score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+
输出:
+-------+------+
| score | rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

通过次数137,331提交次数227,381

二,sql:

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

三,SQL中的四大排名函数

四大排名函数

一、ROW_NUMBER()

Row_number() 在排名是序号连续、不重复,即使遇到表中的两个一样的数值亦是如此

select *,row_number() OVER(order by number ) as row_num
from num 

数据如下:

结果如图:

注意:在使用row_number() 实现分页时需要特别注意一点,over子句中的order by 要与SQL排序记录中的order by保持一致,否则得到的序号可能不是连续的

select *,row_number() OVER(order by number ) as row_num
from num
ORDER BY id

可以看到,此时的序号是不连续的:

二、rank()

Rank() 函数会把要求排序的值相同的归为一组,且每组序号一样,排序不会连续执行。

select *,rank() OVER(order by number ) as row_num
from num 

结果如下:

三、dense_rank()

Dense_rank() 也会把相同的值分为一组,且每组排序号一样,排序是连续的。

select *,dense_rank() OVER(order by number ) as row_num
from num 

结果如下:

四、ntile()

Ntile(group_num) 将所有记录分成group_num个组,每组序号一样

select *,ntile(2) OVER(order by number ) as row_num
from num 

这题使用DENSE_RANK,注意rank是MySQL的关键字要加上``符号


select Score,DENSE_RANK() OVER (ORDER BY Score desc) `rank`
FROMScores; 

作者:xiao-wang-ax
链接:https://leetcode-cn.com/problems/rank-scores/solution/si-da-pai-ming-han-shu-he-guan-jian-zi-b-qvaz/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

sql的四大排名函数相关推荐

  1. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Ord ...

  2. mysql rank函数_Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...

  3. sql 四大排名函数---(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    1.ROW_NUMBER() 定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询,  比如查询前10个 ...

  4. 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...

  5. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)

    row_number() over()   1.2.3.4.5.6.7 rank() over()  1.2.2.4.5.5.7 dense_rank() over() 1.2.2.3.3.4.5 n ...

  6. SQL 语句技巧--排名函数的使用实例

    今天看到一篇文章,关于讨论如何优化语句,原文如下: 作者总结贴: http://blog.csdn.net/wangd1121/archive/2008/06/23/2579435.aspx 网友讨论 ...

  7. SQL 内置排名函数 DENSE_RANK

    求排名前五的数据信息: 实现一: select distinct top 5 Id,Title,sort from content order by sort DESC 实现二: select * f ...

  8. 数据库 四大排名函数

    一.ROW_NUMBER() 序号连续不重复,对于需要排序的值相同的仍然接着往下排. 二.RANK() 对于需要排序的值相同的,序号相同,但与接下来的序号不连续 三.DENSE_RANK() 对于需要 ...

  9. sql 除以_不可思议的SQL排名函数,被您无视了么?

    经常写SQL脚本的朋友,对查询的多样化要求可能会经常头疼.数据库SQL的语法是固定的.但应用要求却是千差万别的.依靠我们所掌握的知识,大部分的查询需求我们还是有办法的解决的,但总有那么一些要求,把我们 ...

最新文章

  1. 日本电信企业5G部署计划 限制了华为中兴设备的使用
  2. WIN XP 命令汇总
  3. 如何让Jupyter Notebook支持pytorch、tensorflow
  4. mplab x ide 中文使用手册_SCI必备利器:翻译又快又准,强推这款超牛X的神器!...
  5. 计算机无法创建新文件夹,无法创建文件,教您无法新建文件夹怎么办
  6. 【重难点】【Java集合 01】HashMap 和 ConcurrentHashMap
  7. NetBEUI协议巧安装
  8. STM32电机TB6612驱动
  9. Win10 + vs2017 编译并配置tesseract-5.0.0-alpha 遇到的问题
  10. 照片删除格式化恢复后损坏的碎片重组修复数据恢复方法
  11. JavaWeb项目部署到服务器并连接本地数据库(超详细!)
  12. “前程无忧”招聘数据预处理——(2)
  13. 802.11 WLAN/CCKM/11R Roaming
  14. C++--struct的用法
  15. 为什么要学习数据结构?
  16. ZigBee网络路由算法设计
  17. MATLAB绘图合集: 绘制表达式和函数fplot
  18. 替换文件内指定字符串
  19. go语言使用grpc和gateway教程
  20. 软件测试 -- 进阶 6 软件缺陷

热门文章

  1. 【2021 第一期】日常开发 26 个常见的 JavaScript 代码优化方案
  2. PBR来龙去脉篇八:开始推导G(1)
  3. sift特征提取算法
  4. STK中SAR传感器参数elevation angle和exclusion angle的说明
  5. 48:WAF绕过-权限控制之代码混淆及行为造轮子
  6. 【Java 8 新特性】Java 8 UnaryOperator和BinaryOperator示例
  7. 浏览器扩展:比你想象得更危险
  8. 如何自行编译HPL-GPU 来测试Benchmark
  9. Character Animator 2020 for Mac(ch 2020 大师版) v3.4直装中文版
  10. upupw ap切换php,upupw套件(php7.0+a+m)windows环境下搭建YII框架