SQL中常用的四个排序函数
我们在写SQL代码时,只要有排序,首先想到的肯定是ORDER BY,以至于好多小伙伴觉得排序多简单啊。
今天就给大家介绍四个你不怎么常用排序函数,他们就是SQL Server排序中经常用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。
我们先创建一个测试数据表Scores
WITH t AS
(SELECT 1 StuID,70 Score
UNION ALL
SELECT 2,85
UNION ALL
SELECT 3,85
UNION ALL
SELECT 4,80
UNION ALL
SELECT 5,74
)
SELECT * INTO Scores FROM t;
SELECT * FROM Scores
结果如下:
1、ROW_NUMBER()
定义:ROW_NUMBER()函数作用就是将SELECT查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询,比如查询前10个 查询10-100个学生。
1.1 对学生成绩排序
示例
SELECT
ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
(提示:可以左右滑动代码)
结果如下:
这里RANK就是每个学生的排名后的次序, 根据Score进行DESC倒序
1.2 获取第2名的成绩信息
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores
) t WHERE t.RANK=2;
结果:
这里用到的思想就是 分页查询的思想 在原sql外再套一层SELECT
WHERE t.RANK>=1 AND t.RANK<=3 是不是就是获取前三名学生的成绩信息了。
2、RANK()
定义:RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里和ROW_NUMBER()有什么不一样呢?ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样。如果出现相同的,他们的排名是一样的。下面看例子:
示例
SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;SELECT RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
结果:
上面是ROW_NUMBER()函数的结果,下面是RANK()函数的结果。
当出现两个学生成绩相同是里面出现变化。RANK()是1-1-3-4-5,而ROW_NUMBER()则还是1-2-3-4-5,这就是RANK()和ROW_NUMBER()的区别了
3、DENSE_RANK()
定义:DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底有什么不同那?特别是对于有成绩相同的情况,DENSE_RANK()排名是连续的,RANK()是跳跃的排名,一般情况下用的排名函数就是RANK() 我们看例子:
示例
SELECT
RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;SELECT
DENSE_RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
结果:
上面是RANK()的结果,下面是DENSE_RANK()的结果
4、NTILE()
定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的'分区'一样 ,分为几个区,一个区会有多少个。
SELECT NTILE(1) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;SELECT NTILE(2) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;SELECT NTILE(3) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;
结果:
就是将查询出来的记录根据NTILE函数里的参数进行平分分区。
这几兄弟就介绍完了,觉得不错记得帮忙转发分享给更多人
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群
推荐阅读
SQL 常用函数
不懂就问:SQL 语句中 where 条件后 写上1=1 是什么意思
推荐一个 SQL 学习刷题网站!
SQL 中为什么经常要加NOLOCK?
执行count(1)、count(*) 与 count(列名) 到底有什么区别?
SQL中常用的四个排序函数相关推荐
- SQL中常用的窗口函数(排序函数)-row_number/rank/dense_rank/ntile
总结四个函数的特点: row_number():连续不重复:1234567 rank() :重复不连续:1222567 dense_rank():重复且连续:1222345 ntile():平均分组: ...
- 数据处理中常用的Excel基本操作及函数
数据处理中常用的Excel基本操作及函数-生信基础版 文章目录 数据处理中常用的Excel基本操作及函数-生信基础版 第一部分:键盘快捷键操作 一.CTRL系列 二.其他系列 第二部分:Excel函数 ...
- java中常用的几种排序算法--常见笔试面试
转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...
- sql 中实现打乱数据的排序
sql 中实现打乱数据的排序 order by NEWID() 就实现了数据的打乱 转载于:https://www.cnblogs.com/yangjinwang/p/3998271.html
- 【温故知新】——原生js中常用的四种循环方式
一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0 网页输出"欢迎下次光临" 在网页中弹出框输入1 网页输 ...
- pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam
来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言 很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...
- Sql中TO_DAYS,DATE_SUB等时间函数介绍
Sql中TO_DAYS,DATE_SUB等时间函数介绍 TO_DAYS 获取当前时间 DATE_SUB(date,INTERVAL expr type)函数 DATEDIFF() 函数 ADDDATE ...
- 自动驾驶中常用的四类机器学习算法
来源:智车科技 机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达.雷达. ...
- php常用的四种排序算法
纯当练习,高手请绕过.以一维数组为例. 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49 ...
最新文章
- 查单个值用什么resultset_视光门诊日记—为什么两个医院查的视力不一样
- python具有可扩展的特性吗_1. 以下()不是python的特征 A 、 收费使用 B 、 跨平台 C 、 可拓展 D 、 可嵌入...
- requests, Beautifusoup 爬取新浪新闻资讯
- CSS 用户界面样式
- java 快速框架下载_Aria:简单易用、高效的下载框架(Java)
- [转帖]Mootools源码分析-23 -- Selectors-2
- python下实现一致性hash
- 实验一:端口扫描(X-scan)
- 将数组文件转换成bin格式文件
- 计算机设备故障,计算机常见硬件故障及其原因
- android mmdd 时间问题
- 小米9开发版已开启Android,小米9 MIUI安卓10开发版已开始推送,建议大家不要去升级...
- Android高级界面设计
- 如何给自己的U盘自定义图标
- CSS兼容性技巧整理从IE6-IE9 火狐谷歌浏览器兼容
- Euler配置yum源
- 追风人拍到壮观龙卷风
- 计算机信息技术指哪些专业,信息技术类专业包括哪些
- 论文阅读:Analysis of Scoliosis From Spinal X-Ray Images
- 多项式计算大模拟:csp202112-3登机牌条码
热门文章
- MotionVenus·MotionBuilder实时插件
- 案例10:设置商业服务网点的高层住宅防火案例分析
- 华为云核心java_java核心
- 求函数f(x)=sinx的导数,证明(sinx)'=cosx,详细过程
- 基于vant的移动端黑马头条知识点总结
- ipad pro和kindle oasis那个是更好的看书工具?
- Avito Cool Challenge 2018 B. Farewell Party 【YY】
- 基于TADF分子Br-DBPzDCN,DMAC-Ph-DBPzDCN,DPA-Ph-DBPzDCN的快速响应室温平面型氨气敏传感器
- 2022-2027(新版)中国高温硫化硅橡胶行业产销状况与需求规模预测报告
- 计算机组装与维修作者闫从丰,计算机组装与维修英文参考文献 计算机组装与维修论文参考文献数量是多少...