gpt4 book ai didi

hadoop - Hive分组并通过计算平均值来计算平均值

转载 作者:行者123 更新时间:2023-12-02 18:33:28 24 4
gpt4 key购买 nike

在HIVE中,我们有一个有线需求的人,我们无法为同一人编写查询

基本上我们有以下数据。

CUSTOMER_NAME PRODUCT_NAME PRICE OCCURANCE ID
customer1, product1, 20, 1
customer1, product2, 30, 2
customer1, product1, 25, 3
customer1, product1, 20, 1
customer1, product2, 20, 2

基本上,我们要做的是列出一次出现的(customer_name,product_name)的平均价格。

例如对于组合(客户1,产品1),产品1的价格为
25 + 20/2(对于客户(1和3),没有明显的事件发生)= 22.5。但是,由于我们要按PRODUCT_NAME分组,因此我们也不知道如何计算不同的出现次数。我已经用[]括号标记了该查询,我们认为需要进行一些更改。

另一个方面是内部查询,我们要选择的客户的平均价格将因不同的发生率下降到前5名。 (这在group by子句仅具有一个CUSTOMER_NAME属性时可以正常工作)
select customer_name,product_name,[sum(price)/count(distinct(occurance_id))]
from customer_prd cprd
Join (select customer_name,sum(price)/count(distinct(occurance id))
order by sum group
by customer_name limit 5)
cprdd
where cprd.customer_name = cprdd.customer_name group by cprd.customer_name,cprd.product_name

预期的输出。
 customer1,product1, 20 (avg for occurance ID 1) + 25(average for occurance ID 2)/2 = 22.5
customer1,product2, 30 + 20/2 = 25

最佳答案

如果我理解正确,似乎唯一的麻烦是重复的。如果您删除重复的事件,那么它是一个简单的平均组:

select customer_name, product_name, avg(price)
from (
select distinct customer_name, product_name, price, occurance_id from cprd
) t
group by customer_name, product_name

关于hadoop - Hive分组并通过计算平均值来计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23804281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com