如何使用 case when 和不同计数计算平均值?

时间:2021-06-24 11:22:11

标签: sql hive

我的源表包含销售信息。每一行都是一个人,并记录他们每次购物/在哪里购物。因此,我可以通过以下方式计算每个行业的平均交易价值:

select 
    industry,
    COALESCE(AVG(CASE WHEN shopcode  in (1,2,4) THEN dollar END), 0) AS avt
from sales 
group by industry

但是我如何调整它来计算每个不同用户计数的支出,即:sum(dollar)/count(distinct person) 与上面非常相似,但不是 sum/count(*) sum/count(distinct person)...我也需要使用合并。

1 个答案:

答案 0 :(得分:0)

<块引用>

我如何调整它来计算每个不同用户计数的支出,即:sum(dollar)/count(distinct person)

您可以使用:

import pandas as pd

test = pd.DataFrame({'timestamp': ["2021/06/24", "2021/06/24", "2021/06/25"], 'data_point_1': ["a", "c", "c"], 'data_point_2': ["b", "d", "d"], 'some_data': [2, 3, 3]})

print(test)
#    timestamp data_point_1 data_point_2  some_data
# 0  2021/06/24            a            b          2
# 1  2021/06/24            c            d          3
# 2  2021/06/25            c            d          3

# desired:
#    timestamp   (a,b)       (c,d)
# 0  2021/06/24    2           3
# 1  2021/06/25    0           3

我不确定 select industry, sum(dollar) / count(distinct person) from sales group by industry; 上的过滤是为了什么。它在您的查询中,但不是问题的一部分。如果您希望将其用于特定商店,我建议将其移至 shop_code 子句:

where
相关问题