Hive 查询以查找百分比值

Posted

技术标签:

【中文标题】Hive 查询以查找百分比值【英文标题】:Hive query to find percentage value 【发布时间】:2016-11-28 17:32:48 【问题描述】:

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

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

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

如何编写查询以查找输出为:customer_id,operating_system,% of operating system used

提前致谢!

【问题讨论】:

以下是我准备的查询。我不确定它是否会起作用。选择 t.customer_id,t.operating_system,100*( count(t.transaction_id) / q1.total ) 从表 t 中,(select count(transaction_id) as total from table where device_type in (mobile,tablet) and transaction_time 360​​ Group by customer_id ) q1 where device_type in (mobile,tablet) and transaction_time 360​​ Group by customer_id,operating_system 【参考方案1】:

在下面的子查询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 

【讨论】:

感谢您的询问。只有一个问题。我们需要统计交易的总数(transaction_id-每笔交易都是唯一的)所以我们可以在不使用transaction_id的情况下找出所有交易的数量在查询中? 我不完全了解您的数据。一个客户和操作系统的 transaction_id 是否可能重复?请发布数据示例。 固定查询。没查,现在做不了,可能还有其他的bug。

以上是关于Hive 查询以查找百分比值的主要内容,如果未能解决你的问题,请参考以下文章

margin/padding百分比值的计算

如何循环 JSON 数据以获取所有对象的打印百分比值,使用 for each 或 other [重复]

在jQuery中获取CSS规则的百分比值

Sql查询以查找两个给定日期之间的视图百分比差异

使用百分比值填充 flexbox 项

在 OBIEE 中使用计算项目时如何获得正确的百分比值?