hiveSQL:统计视频观看数Top50所关联视频的所属类别Rank

一.统计此题需要多表连接嵌套,需要使用到的内置处理函数有:

1.order by desc :字段按照降序排列(不加desc默认升序)

2.lateral view :(侧写表,关联)

用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlia

3.explode:将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行

4.group by:按字段分数查询

5.count():聚合函数,求总数量

二.相关的字段表与解释

hiveSQL:统计视频观看数Top50所关联视频的所属类别Rank_第1张图片

三.步骤:

第一步:查询视频热度前50位的视频   分类和相关视频id

select 
    views,
    category about_category,
    relatedId about_id_array 
from 
    video 
order by 
    views 
desc limit 50; t1 

第二步:打散相关视频id,再把视频分类和每个id一一对应起来

select 
    t1.about_category cate,
    about_id
from ()t1
lateral view 
    explode(t1.about_id_array) tmp_table as about_id; t2

第三步:再将视频分类打散,与每个视频id对应起来

select
    id
from
    () t2
lateral view
    explode(t2.cate) tmp_t as id; t3

第四步:再通过分组计算出分类字段的数量,然后降序排列

select 
    count(t3.id) count_id,
    t3.id category_name
from 
    ()t3
group by 
    t3.id 
order by 
    count_id desc;

你可能感兴趣的:(sql,database,mysql,hive,大数据)