sql的四大排名函数
一,题目描述
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的四大排名函数相关推荐
- SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Ord ...
- mysql rank函数_Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...
- sql 四大排名函数---(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
1.ROW_NUMBER() 定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询, 比如查询前10个 ...
- 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. 表结构和初始数据Sql 附上表结构和初始数据图: ...
- 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 ...
- SQL 语句技巧--排名函数的使用实例
今天看到一篇文章,关于讨论如何优化语句,原文如下: 作者总结贴: http://blog.csdn.net/wangd1121/archive/2008/06/23/2579435.aspx 网友讨论 ...
- SQL 内置排名函数 DENSE_RANK
求排名前五的数据信息: 实现一: select distinct top 5 Id,Title,sort from content order by sort DESC 实现二: select * f ...
- 数据库 四大排名函数
一.ROW_NUMBER() 序号连续不重复,对于需要排序的值相同的仍然接着往下排. 二.RANK() 对于需要排序的值相同的,序号相同,但与接下来的序号不连续 三.DENSE_RANK() 对于需要 ...
- sql 除以_不可思议的SQL排名函数,被您无视了么?
经常写SQL脚本的朋友,对查询的多样化要求可能会经常头疼.数据库SQL的语法是固定的.但应用要求却是千差万别的.依靠我们所掌握的知识,大部分的查询需求我们还是有办法的解决的,但总有那么一些要求,把我们 ...
最新文章
- 日本电信企业5G部署计划 限制了华为中兴设备的使用
- WIN XP 命令汇总
- 如何让Jupyter Notebook支持pytorch、tensorflow
- mplab x ide 中文使用手册_SCI必备利器:翻译又快又准,强推这款超牛X的神器!...
- 计算机无法创建新文件夹,无法创建文件,教您无法新建文件夹怎么办
- 【重难点】【Java集合 01】HashMap 和 ConcurrentHashMap
- NetBEUI协议巧安装
- STM32电机TB6612驱动
- Win10 + vs2017 编译并配置tesseract-5.0.0-alpha 遇到的问题
- 照片删除格式化恢复后损坏的碎片重组修复数据恢复方法
- JavaWeb项目部署到服务器并连接本地数据库(超详细!)
- “前程无忧”招聘数据预处理——(2)
- 802.11 WLAN/CCKM/11R Roaming
- C++--struct的用法
- 为什么要学习数据结构?
- ZigBee网络路由算法设计
- MATLAB绘图合集: 绘制表达式和函数fplot
- 替换文件内指定字符串
- go语言使用grpc和gateway教程
- 软件测试 -- 进阶 6 软件缺陷
热门文章
- 【2021 第一期】日常开发 26 个常见的 JavaScript 代码优化方案
- PBR来龙去脉篇八:开始推导G(1)
- sift特征提取算法
- STK中SAR传感器参数elevation angle和exclusion angle的说明
- 48:WAF绕过-权限控制之代码混淆及行为造轮子
- 【Java 8 新特性】Java 8 UnaryOperator和BinaryOperator示例
- 浏览器扩展:比你想象得更危险
- 如何自行编译HPL-GPU 来测试Benchmark
- Character Animator 2020 for Mac(ch 2020 大师版) v3.4直装中文版
- upupw ap切换php,upupw套件(php7.0+a+m)windows环境下搭建YII框架