case when 配合 lateral view explode 实现不同维度指标的共同展示

select 
 b.types
,sum(show) as show 
,sum(click) as click
,sum(finish) as finish
from (
  select
   case when action = 'b_click' then '一'
        when action = 'c_click' then '二'
        when action = 'd_finish' then '三'
        when action = 'a' then '一,二,三' 
        end as type 
  ,count(case when action in ('a') then 1 end) as show 
  ,count(case when action rlike '_click$' then 1 end) as click
  ,count(case when action rlike '_finish$' then 1 end) as finish
  from (
    select 'a' as action 
    union all 
    select 'b_click' as action 
    union all 
    select 'c_click' as action 
    union all 
    select 'd_finish' as action 
    union all 
    select 'b_click' as action 
    union all 
    select 'c_click' as action 
    union all 
    select 'd_finish' as action 
  ) as a 
  group by 
   case when action = 'b_click' then '一'
        when action = 'c_click' then '二'
        when action = 'd_finish' then '三'
        when action = 'a' then '一,二,三' 
        end 
) as a
lateral view explode(split(type,',')) b as types 
group by 
 types

结果:

符合期望的结果,类型一、二、三的show数量均为1 (其实是表示三个分类的总的show数量),后两列分别是三个分类的click和finish数量。即:show的值没有类型types的维度,click和finish指标有类型types的维度。上面sql通过case when 配合 lateral view explode实现了不同维度指标的共同展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值