SQL中常用的四个排序函数,你知道几个?

我们在写SQL代码时,只要有排序,首先想到的肯定是ORDER BY,以至于好多小伙伴觉得排序多简单啊。

今天就给大家介绍四个你不怎么常用排序函数,他们就是SQL Server排序中经常用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。

我们先创建一个测试数据表Scores:

WITH t AS
(SELECT1 StuID,70 Score
UNION ALL
SELECT2,85
UNION ALL
SELECT3,85
UNION ALL
SELECT4,80
UNION ALL
SELECT5,74
)
SELECT*INTO Scores FROM t;
SELECT*FROM Scores

结果如下:

1.ROW_NUMBER()

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

1.1 对学生成绩排序示例

SELECT
ROW_NUMBER() OVER (ORDERBY SCORE DESC)AS[RANK],*
FROM Scores;

结果如下:

这里RANK就是每个学生的排名后的次序, 根据Score进行DESC倒序 

1.2 获取第2名的成绩信息 

SELECT*FROM(
SELECT ROW_NUMBER() OVER (ORDERBY SCORE DESC)AS[RANK],*
FROM Scores
) t WHERE t.RANK=2;

结果:

这里用到的思想就是 分页查询的思想 在原sql外再套一层SELECTWHERE t.RANK>=1 AND t.RANK<=3 是不是就是获取前三名学生的成绩信息了。

2.RANK() 

定义:RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里和ROW_NUMBER()有什么不一样呢?ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样。如果出现相同的,他们的排名是一样的。下面看例子:

示例:

SELECT ROW_NUMBER() OVER (ORDERBY SCORE DESC)AS[RANK],*
FROM Scores;

SELECT RANK() OVER (ORDERBY 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 (ORDERBY SCORE DESC)AS[RANK],*
FROM Scores;

SELECT
DENSE_RANK() OVER (ORDERBY SCORE DESC)AS[RANK],*
FROM Scores;

结果:

上面是RANK()的结果,下面是DENSE_RANK()的结果。

4.NTILE()

定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个。  

SELECT NTILE(1) OVER (ORDERBY SCORE DESC)AS[RANK],*FROM Scores;


SELECT NTILE(2) OVER (ORDERBY SCORE DESC)AS[RANK],*FROM Scores;


SELECT NTILE(3) OVER (ORDERBY SCORE DESC)AS[RANK],*FROM Scores;

结果:

就是将查询出来的记录根据NTILE函数里的参数进行平分分区。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/251610.html<

(0)
运维的头像运维
上一篇2025-04-29 01:35
下一篇 2025-04-29 01:36

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注