用于查找百分比值的配置单元查询

wvyml7n5  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(463)

我正在处理的表的列是customer\u id、operating\u system、device\u type、transaction\u id、transaction\u time。
我想找出在过去360天内,客户在移动/平板设备上进行的交易中使用的操作系统的百分比。
基本方法是:设备类型输入(移动/平板电脑)和时间戳超过360天的事务数,按客户id、操作系统分组*100/特定客户对设备类型输入(移动/平板电脑)完成的事务总数,不考虑操作系统。
如何编写查询以查找输出:customer\u id,operating\u system,所用操作系统的百分比
提前谢谢!

balp4ylt

balp4ylt1#

在子查询中 s 下面计算了用户和操作系统的总计数。由于使用了分析函数,因此行数与源数据集中的行数相同。这就是为什么您需要按消费者id和操作系统进行聚合。使用 max 或者 min :

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

相关问题