总结13:Sql常用函数_排名函数

----为结果集内每一行进行编号,从1开始后面行依次加1
select row_number() over (order by ID) as rowid ,*
  FROM TestTable


/*
如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连续。
例如,如果有价格最高的两种产品的价格相同,它们将并列第一。
由于已有两行排名在前,所以具有下一个最高价格的产品将排名第三。
该排名等于该行之前的所有行数加一。因此,RANK 函数并不总返回连续整数。
*/
select rank() over (order by ID) as rank ,*
  FROM TestTable

 


/*
如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。
例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价格的产品将排名第二。
因此,DENSE_RANK 函数返回的数字没有间断,并且始终具有连续的排名。
*/
select rank,count(rank) from (

--示例主体
select dense_rank() over (order by ID) as rank ,*
  FROM TestTable
--示例主体结束
) as aspp group by rank

posted @ 2011-09-26 20:47  XingDreams  阅读(160)  评论(0编辑  收藏  举报