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

Hive 用于查找百分比值的配置单元查询,hive,subquery,hiveql,percentage,bigdata,Hive,Subquery,Hiveql,Percentage,Bigdata,我正在处理的表的列是客户id、操作系统、设备类型、事务id、事务时间 我想了解客户在过去360天内在移动/平板设备上进行的交易中使用的操作系统的百分比 基本方法是:移动设备/平板电脑中的设备类型和时间戳过去360天的交易数量,按客户id分组,操作系统*100/特定客户对移动设备/平板电脑中的设备类型完成的交易总数,无论操作系统如何 如何编写查询以查找输出:customer\u id,operation\u system,所用操作系统的百分比 提前谢谢你 在子查询中,计算消费者的总计数和操作系统的

我正在处理的表的列是客户id、操作系统、设备类型、事务id、事务时间

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

基本方法是:移动设备/平板电脑中的设备类型和时间戳过去360天的交易数量,按客户id分组,操作系统*100/特定客户对移动设备/平板电脑中的设备类型完成的交易总数,无论操作系统如何

如何编写查询以查找输出:customer\u id,operation\u system,所用操作系统的百分比

提前谢谢你

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

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


以下是我准备的查询。我不确定它是否有效。从表t中选择t.customer_id、t.operating_system、100*countt.transaction_id/q1.total,从表中选择counttransaction_id作为总计,其中,根据客户_id q1在移动设备、平板电脑和交易时间360组中输入设备,根据客户_id在移动设备、平板电脑和交易时间360组中输入设备,操作系统下面是我准备的查询。我不确定它是否有效。从表t中选择t.customer_id、t.operating_system、100*countt.transaction_id/q1.total,从表中选择counttransaction_id作为总计,其中,根据客户_id q1在移动设备、平板电脑和交易时间360组中输入设备,根据客户_id在移动设备、平板电脑和交易时间360组中输入设备,操作系统谢谢您的查询。只有一个问题。我们需要计算每个交易的唯一交易id的总数。我们可以在查询中使用交易id找出所有交易的计数吗?我不完全理解您的数据。一个客户和操作系统的事务处理id是否可能重复?请发布数据示例。修复查询。我没有检查,现在无法执行,可能还有其他错误。谢谢您的查询。只有一个问题。我们需要计算每个交易的唯一交易id的总数。我们可以在查询中使用交易id找出所有交易的计数吗?我不完全理解您的数据。一个客户和操作系统的事务处理id是否可能重复?请发布数据示例。修复查询。我没有检查,现在不能做,可能还有其他的错误。
    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