Over 子句

没有在 group by 出现的基本列,是不能在select 子句中使用,若要使用,就只能作为聚合函数的输入。

 

而 over 子句 就可以决解这一问题,如:

 

select Name, Max(Age) Over() as MaxAge from users

 

row_number()

从1开始,为每一条分组记录返回一个数字,

这里的ROW_NUMBER() OVER (ORDER BY Name DESC) 是先把xlh列降序,再为降序以后的每条xlh记录返回一个序号

 

row_number() OVER (PARTITION BY Department ORDER BY Name)

表示根据Department分组,在分组内部根据Name排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

 

select * from (select name,sex,COUNT(sex) as sexCount, ROW_NUMBER() OVER(PARTITION BY NAME order by count(sex) desc) as rowIndex

from uses group by NAME,sex) a where rowIndex=1

 

http://q.cnblogs.com/q/63682/

 

posted @ 2012-04-14 23:07  Yu  阅读(164)  评论(0编辑  收藏  举报