10.4.7 统计上传视频最多的用户Top10以及他们上传的观看次数在前20的视频
思路:
- 先找到上传视频最多的10个用户的用户信息
select
from
gulivideo_user_orc
order by
videos
desc limit
10;
- 通过uploader字段与gulivideo_orc表进行join,得到的信息按照views观看次数进行排序即可。
最终代码:
select
t2.videoId,
t2.views,
t2.ratings,
t1.videos,
t1.friends
from (
select
*
from
gulivideo_user_orc
order by
videos desc
limit
10) t1
join
gulivideo_orc t2
on
t1.uploader = t2.uploader
order by
views desc
limit
20;
10.4.8 统计每个类别视频观看数Top10
思路: - 先得到categoryId展开的表数据
- 子查询按照categoryId进行分区,然后分区内排序,并生成递增数字,该递增数字这一列起名为rank列
- 通过子查询产生的临时表,查询rank值小于等于10的数据行即可。
最终代码:
select
t1.*
from (
select
videoId,
categoryId,
views,
row_number() over(partition by categoryId order by views desc) rank from gulivideo_category) t1
where
rank <= 10;
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。