hive分组并通过计算distinct来计算平均值

cig3rfwq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

伙计们,我们在配置单元中有一个有线需求,我们无法为同一个需求编写查询
基本上我们有以下数据。

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

基本上我们要做的是列出单次事件的平均价格(客户名称、产品名称)。
e、 g.对于组合(客户1,产品1),产品1的价格为25+20/2(客户(1和3)的不同发生次数)=22.5。但由于我们想按产品名称分组,我们也不知道如何计算不同的发生率。我已经用[]括号标记了这个查询,在这里我们觉得需要做一些更改。
另一个方面是内部查询,我们想在这里选择客户,他们的平均价格将下降到前5名为不同的发生这可以正常工作,因为GROUPBY子句只有一个属性(customer\u 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
2wnc66cl

2wnc66cl1#

如果我理解正确的话,这里唯一的问题似乎是你有复制品。如果删除重复事件,则是简单的分组方式和平均值:

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

相关问题