SQLserver2005中的四个评价函数(也叫排名函数)
---- 使用ROW_NUMBER函数计算行数
----对freight从小到大来产生行号
use northwind
go
select orderid,CustomerID,Employeeid,freight, 行号=row_number() over(order by freight) from orders
---可以用PARTITION BY来对每个客户的freight来进行分别排序
select orderid,CustomerID,Employeeid, 行号=row_number() over(partition by employeeid order by freight) from orders
--不过不可放入where条件字句中
---必须用视图或子查询的方式来处理
--如下所示:查询行号在1~100之间的记录
select * from
(select orderid,CustomerID,Employeeid, 行号=row_number() over(order by freight) from orders)a
where 行号 between 1 and 100
---也可以用rank或DENSE_RANK
select orderid,CustomerID,Employeeid, 行号=rank() over(order by freight) from orders
---或
select orderid,CustomerID,Employeeid, 行号=DENSE_RANK ( ) over(order by freight) from orders
---来处理当排序条件相同如何来进行计数,同时也都可以用partition by可选参数
----另外NTILE(int)可以把结果分为若于个分组来显示
---如下所示:结果集被分成了20组来显示
select orderid,CustomerID,Employeeid, 行号=NTILE(20) over(order by freight) from orders
本文介绍了 SQL Server 2005 中的四种排名函数:ROW_NUMBER、RANK、DENSE_RANK 和 NTILE 的使用方法。通过这些函数可以实现按特定字段排序并分配行号或分组,例如按运费进行排序。还展示了如何结合 PARTITION BY 子句为不同分组内的数据单独排序。
716

被折叠的 条评论
为什么被折叠?



