Hive查询以查找百分比值

时间:2016-11-28 17:32:48

标签: hive subquery hiveql percentage bigdata

我正在处理的表的列是customer_id,operating_system,device_type,transaction_id,transaction_time。

我想了解客户在过去360天内在移动设备/平板电脑上进行的交易所使用的操作系统的百分比。

基本方法是:设备类型(移动/平板电脑)和时间戳超过360天的交易数量按客户_id,operating_system * 100 /特定客户为设备类型完成的交易总数(手机/平板电脑) )无论操作系统如何。

如何编写查询以查找输出:customer_id,operating_system,使用的操作系统的百分比

提前谢谢你!

1 个答案:

答案 0 :(得分:0)

在下面的子查询s中,计算消费者总数和操作系统数。由于使用了分析函数,因此行数与源数据集中的相同。这就是您需要通过consumer_id和operating_system进行聚合的原因。使用maxmin

    select --group by consumer_id and operating_system
           customer_id,
           operating_system,
           max(operating_system_cnt)                    operating_system_cnt,
           max(total_cnt)                               total_cnt,
           max(operating_system_cnt)*100/max(total_cnt) operating_system_percent
    from
    ( 
    select   --calculate total count and operating_system_count  
    customer_id, 
    operating_system,
    count(transaction_id) over(partition by customer_id, operating_system) operating_system_cnt,
    count(transaction_id) over(partition by customer_id) total_cnt
    from your_table
    where --your filter conditions here for mobile/tablet and last 360 days
    )s
group by
        customer_id, 
        operating_system