千家信息网

sql server排名函数DENSE_RANK的用法是什么

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章将为大家详细讲解有关sql server排名函数DENSE_RANK的用法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、需求之前sq
千家信息网最后更新 2025年01月22日sql server排名函数DENSE_RANK的用法是什么

这篇文章将为大家详细讲解有关sql server排名函数DENSE_RANK的用法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、需求

  之前sql server 的排名函数用得最多的应该是RoW_NUMBER()了,我通常用ROW_NUMBER() + CTE 来实现分页;今天逛园,看到另一个内置排名函数还不错,自己顺便想了一个需求,大家可以花1分钟先想想要怎么实现。

  需求很简单:求成绩排名前五的学生信息。

  例如:

  由于成绩可以并列,所以前五名可能有多个。例如:

  测试数据:  

declare @t table(ID int, StudentName nvarchar(15), Score int) insert into @tselect 1,'黄一',99 union allselect 2,'吴二',99 union allselect 3,'张三',99 union allselect 4,'李四',98 union allselect 5,'王五',97 union allselect 6,'赵六',96 union allselect 7,'田七',95 union allselect 8,'纪八',94 union allselect 9,'邱九',93 union allselect 10,'林十',92 

二、自己实现

  我的想法:既然可能出现并列,那么就用 DISTINCT 找到前五的成绩。ok,代码如下:

select t1.* from @t t1join(select distinct top 5 Score from @t order by Score desc) t2on t1.Score = t2.Score    

  看起来和上面的要求的结果还是不太一样,少了排序,当然我们可以在程序处理,这不是问题。

三、使用内置排名函数 DENSE_RANK

  其实sql server已经内置了这样的函数可以帮助我们轻松实现,ok,直接上代码:

;with cte as(  select dense_rank() over(order by Score desc) rank,* from @t)select * from cte where rank < 6   

四、扩展,内置排名函数RANK

  与 DENSE_RANK类似还有一个RANK函数,不过RANK函数不会顺序排名,而是根据序号排。有点绕,把上面的函数改为RANK()就知道了。

关于sql server排名函数DENSE_RANK的用法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

函数 成绩 需求 不错 代码 内容 文章 更多 知识 篇文章 面的 帮助 这不 信息 多个 学生 常用 序号 想法 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全知识竞答40道题答案 乡镇小学网络安全应急预案 网络技术中心管理制度 scum进服务器总是掉线 银行软件开发程序员公司前景 虚拟服务器怎么收费的 国防科技情报数据库 怎么在数据库上创建储户表 网络安全反馈表 软件开发app前十名 usb打印服务器驱动的安装方法 查看本地域名服务器的缓存 阿里云无影云服务器如何连接 怎么用数据玩我的世界服务器 开源 流媒体 服务器 阜南县网络安全宣讲团 安庆市弹性云服务器租赁 主机是如何确定本地域名服务器 网络服务器管理pdf 东软集团软件开发师工资 关于网络安全作文100字图片 数据库基础应用秋终结性考试 格力软件开发待遇怎么样好不好 hana网络技术的前景 软件开发部署服务器 服务器配置和设备的管理 医院数据网络安全方案 车子显示服务器错误怎么回事 怎么给服务器文件夹做管理 干货满满快来开启网络安全大作战
0