SQL SERVER 2008排序函数(窗口函数)-阿里云开发者社区

开发者社区> 数据库> 正文

SQL SERVER 2008排序函数(窗口函数)

简介: 排序函数可以用来协助给结果集增加位置信息。SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号RANK:基于给定行集合的选择顺序,给出行的位置。如有一些值连在一起,位置间有空隙     如两个值在第一位,然后下一个值将在第三位DENSE_RANK:同RANK一样,但没有在顺序中留下空隙。

排序函数可以用来协助给结果集增加位置信息。SQL SERVER 2008只有四个排序函数,介绍如下:

ROW_NUMBER:返回结果集中给定行的序号
RANK:基于给定行集合的选择顺序,给出行的位置。如有一些值连在一起,位置间有空隙
     如两个值在第一位,然后下一个值将在第三位
DENSE_RANK:同RANK一样,但没有在顺序中留下空隙。RANK肯能位1,2,2,4,4,6,6;DENSE_RANK为:1,2,2,3,3,4,4-NTILE:DENSE_RANK用于将排名分为若干部分。如果一个表有100个值,可以使用NTITL(2)将前五十个数定为1,后五十个数定为2 

示例如下:

CREATE VIEW contractSubset  
AS
    SELECT TOP 20 *
    FROM Person.Person 
    WHERE FirstName like 'b%'  
    
select firstname,
      (select COUNT(*) 
       from contractSubset as c
       where c.FirstName <contractSubset.FirstName)+1 As Rank
from contractSubset 
order by FirstName            
    

SELECT firstname,
    ROW_NUMBER() OVER (ORDER BY firstname) AS 'ROW_NUMBER',
    RANK() OVER (ORDER BY firstname) as 'RANK',
    DENSE_RANK() OVER (ORDER BY firstname) as 'DENSE_RANK',
    NTILE(4) OVER (ORDER BY firstname) AS 'NTILE(4)'      
from contractSubset 
order by FirstName    
    

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章