大数据 hive 记录 窗口函数 求占比

有个需求 统计每天的类型和占比

 

绑定渠道 绑定人数 统计日期 占比

 

占比是每天的每个渠道数/每天的总数

 

首先查出来渠道,人数,日期 hql是

select case bind_type
    when 1 then '二维码绑定'
    when 2 then '邀请码绑定'
    when 3 then '领取优惠券绑定'
    when 4 then '分享链接绑定'
  end bindtype,substring(bind_date,0,10) countday,count(bind_type) counttype from ods_app_goods_mb_info where length(bind_date)>0 group by substring(bind_date,0,10),bind_type

大数据 hive 记录 窗口函数 求占比_第1张图片

占比就是 比如 23号, 23的二维码绑定数/23的总数  14/14+25+40=14/79

这里用窗口函数之后的hql是  

select a.bindtype,a.countday,a.counttype,sum(a.counttype) over(partition by a.countday)  from (
select case bind_type
    when 1 then '二维码绑定'
    when 2 then '邀请码绑定'
    when 3 then '领取优惠券绑定'
    when 4 then '分享链接绑定'
  end bindtype,substring(bind_date,0,10) countday,count(bind_type) counttype from ods_app_goods_mb_info where length(bind_date)>0 group by substring(bind_date,0,10),bind_type) a order by substring(countday,0,10)

大数据 hive 记录 窗口函数 求占比_第2张图片

这样就可以把查出来的结果可以再进行一次汇总统计了。

上面红色的意思的     根据统计日期分区求counttype的和作为窗口列

你可能感兴趣的:(大数据,hive,窗口函数)