日期:2014-05-16  浏览次数:20501 次

over partition by与group by 的区别

http://csbison.iteye.com/blog/482964

?

http://www.cnblogs.com/rootq/archive/2009/03/12/1409674.html

?

9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?
建索引 (user_id)。

文件的话不会处理,或者将(看电影连续剧等的记录)装载到数据库中
假设为数据库的表 ta 一天数据量为5千万

select user_id
from
(select user_id,film_id,row_number()(over partition by user_id) film_cnt
from ta where style='film' and deal_date=20100201)
where film_cnt>=5

?

2.select * from
(select user_id,username,rank() over (partition by dept_id order by user_atte_id desc) od from t_user)
where od=1

按dept_id分组,然后按user_atte_id倒序排列

?

把上面的rank()换成row_number(),数据少了一行,在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果

select * from
(select user_id,username,row_number() over (partition by dept_id order by user_atte_id desc) od from t_user)
where od=1;

?

?