NTILE函数在SQL Server 2000中的实现方法
2009-08-05 13:14
302 查看
众所周知,NTILE函数是SQL Server 2005的新特性之一,用于将有序分区中的行分发到指定数目的组中。各个组有编号,编号从一开始。对于每一个行,NTILE 将返回此行所属的组的编号。如果分区的行数不能被整数整除,则将导致一个成员有两种大小不同的组。按照 OVER 子句指定的顺序,较大的组排在较小的组前面。用NTILE函数计算排名值与其它方法一样简单(分区排名方案和排名值效率分析【图文+测试代码】 ),唯一的区别在于,NTILE函数接受一个表示组的数量的参数,而其它的方法是没有参数的。
SQL代码和效果如下:
declare @numtile int;
set @numtile =9;--组数
select empid ,qty,rn,
case when rn<=(tilesize+1)*remainder
then (rn-1)/(tilesize+1)+1
else (rn-remainder-1)/(tilesize)+1
end as tiles
from
(
select empid,qty,rn,numrows/@numtile as tilesize,numrows%@numtile as remainder
from
(
select empid,qty,(select COUNT (*) from Sales as S2 where S2.qty <S1.qty or S2.qty =S1.qty and S2.empid <=S1.empid) as rn ,(select COUNT (*) from Sales ) as numrows from Sales as S1
) as D1
) as D2 order by qty,empid
SQL代码和效果如下:
declare @numtile int;
set @numtile =9;--组数
select empid ,qty,rn,
case when rn<=(tilesize+1)*remainder
then (rn-1)/(tilesize+1)+1
else (rn-remainder-1)/(tilesize)+1
end as tiles
from
(
select empid,qty,rn,numrows/@numtile as tilesize,numrows%@numtile as remainder
from
(
select empid,qty,(select COUNT (*) from Sales as S2 where S2.qty <S1.qty or S2.qty =S1.qty and S2.empid <=S1.empid) as rn ,(select COUNT (*) from Sales ) as numrows from Sales as S1
) as D1
) as D2 order by qty,empid
相关文章推荐
- SQL Server 2000 附加 SQL Server 2005 数据库具体方法
- QTableView中嵌入复选框CheckBox方法:实现QAbstractItemDelegate的paint()函数。
- 利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- sql server中通过查询分析器实现数据库的备份与恢复方法分享
- strlen函数实现的几种方法
- SQL Server中Group分组获取Top N方法实现
- sql server 2000 数据库自动备份设置方法
- windows 2003下安装 sql server 2000的方法
- [原创]SQL Server 2000 非1433端口的客户端连接方法
- SQL Server 2000 函数使用---CAST 和 CONVERT
- SQL Server 2000日志文件丢失的恢复方法
- 探索c++的函数pow()的实现方法·数学与程序设计的结合(绝对原创)
- 判断数组是否包含某个元素的js函数实现方法
- SQL Server 使用分区函数实现查询优化
- 写4个同名方法,实现两个整数、两个实数,一个实数一个整数,一个整数一个实数之间的求和。在主调函数中调用这4个方法计算相关的值。(方法的重载)
- javascript另类方法实现htmlencode()与htmldecode()函数实例分析
- 汇编:简约不简单的不定参函数实现方法
- ruby,用类方法实现类初始化函数的需求变化
- PHP自定义图片缩放函数实现等比例不失真缩放的方法
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数