一、需求

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

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

  例如:

  

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

    

  测试数据:  

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

二、自己实现

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

select t1.* from @t t1
join(select distinct top 5 Score from @t order by Score desc) t2
on 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()就知道了,得到的结果如下:

  

转载于:https://www.cnblogs.com/4littleProgrammer/p/4783691.html

sql server 排名函数:DENSE_RANK相关推荐

  1. SQL SERVER 排名 函数

     SQL SERVER 排名 函数 ROW_NUMBER():行号.SQL Server2005中,使用ROW_NUMBER()非常方便 SELECT  * , ROW_NUMBER() OVER ( ...

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

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

  3. 第一篇博客-Sql排名函数DENSE_RANK

    Sql排名函数☞DENSE_RANK 1.DENSE_RANK函数介绍 dense_rank函数用于返回结果集的分区内每行的排名,函数考虑到了over子句中排序字段值相同的情况,over子句中排序字段 ...

  4. SQL Server用户自定义函数

    用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统 函 数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过 EXECUTE 命令来执行.在 SQL Server 中根据 ...

  5. SQL Server CONVERT() 函数,Date 函数

    From: http://www.w3school.com.cn/sql/func_convert.asp 定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() ...

  6. SQL Server日期函数集合

    SQL Server日期函数集合--1:获取系统日期和时间值函数 --getdate() SELECT GETDATE() AS 'today' --getutcdate() SELECT GETUT ...

  7. sql server 自定义函数的使用

    sql server 自定义函数的使用 自定义函数 用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回 用户自定义函数的类型: 标量函数:返回一个标量值 表格值函数{内联表格值函 ...

  8. sql server charindex函数和patindex函数详解(转)

    charindex和patindex函数常常用来在一段字符中搜索字符或字符串.假如被搜索的字符中包含有要搜索的字符,那么这两个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的开始位数. ...

  9. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法

    Sql Server REPLACE函数的使用 REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法 REPLACE ( ''string_replace1' ...

  10. Sql server 日期函数和日期转换

    时间函数 SQL Server Date 函数 下面的表格列出了 SQL Server 中最重要的内建日期函数: 函数 描述 GETDATE() 返回当前日期和时间 DATEPART(Type,dat ...

最新文章

  1. 《C#精彩实例教程》小组阅读08 -- C#流程控制语句
  2. 简述Python中的break和continue的区别
  3. php背景,php图片背景填充实例
  4. unity集成openinstall流程
  5. String 类型切割成数组-转int数组-升列排序-拼接字符串、需求 有如下一个字符串 91 27 46 38 50
  6. vsts~CI/CD实现自动化编译
  7. 华为开启位置服务器,android 开启位置服务器
  8. Spring高级之注解@PropertySource详解(超详细)
  9. Redis和MongoDB的区别
  10. 搜索日志文件的linux,linux日志查找
  11. hdu1161 欧拉路
  12. 软件安装——在Vmware中安装CentOS7(转载)
  13. Fiddler的安装和使用教程(详细)
  14. 以太坊基础开发入门教程,完整入门【转】
  15. kindeditor上传图片php,使用 KindEditor 编辑器PHP语言本地上传图片提示错误
  16. 效率直接起飞的PPT技巧,你知道吗
  17. vue自定义指令—directive详解
  18. Android-进阶教程-权限-特殊权限-AppOps
  19. 上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树--编译原理
  20. 一条校招/社招潜规则~

热门文章

  1. python中list是链表吗_Python
  2. 【hdu1018】Big Number(求n!的位数----斯大林公式/log函数)
  3. 【学习笔记】平衡二叉树(AVL树)简介及其查找、插入、建立操作的实现
  4. PAT-A1020:Tree Traversal(二叉树的重建及其中序、后序遍历)
  5. hdoj2084:数塔(dp基础题----递归写法/状态转移方程法)
  6. html图表实现,用 Flotr2 实现的 HTML5 图表
  7. Deepracer 学了就能云驾驭赛车? Deepracer机器学习入门级干货分享!
  8. 极客大学架构师训练营 系统架构 分布式缓存 一致性哈希 Hash 第9课 听课总结
  9. 对于Y=Hx的H细节的一些讨论
  10. Delay-Doppler equalization(8)(时延多普勒均衡)⭐