我正在处理的表的列是customer_id,operating_system,device_type,transaction_id,transaction_time。
我想了解客户在过去360天内在移动设备/平板电脑上进行的交易所使用的操作系统的百分比。
基本方法是:设备类型(移动/平板电脑)和时间戳超过360天的交易数量按客户_id,operating_system * 100 /特定客户为设备类型完成的交易总数(手机/平板电脑) )无论操作系统如何。
如何编写查询以查找输出:customer_id,operating_system,使用的操作系统的百分比
提前谢谢你!
答案 0 :(得分:0)
在下面的子查询s
中,计算消费者总数和操作系统数。由于使用了分析函数,因此行数与源数据集中的相同。这就是您需要通过consumer_id和operating_system进行聚合的原因。使用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