【问题标题】:mean of count in an interval区间内计数的平均值
【发布时间】:2020-06-30 13:57:33
【问题描述】:

我有一张这样的桌子:

item_id    customer_id    date
12345      a              201912
12345      a              202001
12345      a              202002
12345      b              202002
12345      c              202002
67890      f              201912
67890      e              202001

我想统计每个月购买每件商品的customer_id 的数量,然后得到在表格中的日期间隔(本例中为三个月)内购买每件商品的客户的平均值。输出应该是:

item_id    customer_id
12345      (1+1+3)/3=5/3
67890      (1+1+0)/3

我陷入了这个问题。你可以帮帮我吗?谢谢!

【问题讨论】:

    标签: sql postgresql count


    【解决方案1】:

    您可以使用count(distinct) 一步完成:

    select item_id, count(*) / count(distinct date)
    from t
    group by item_id;
    

    这将总计数除以月数 - 正是您的计算。

    如果你的日期真的存储为日期,可以使用date_trunc()

    select item_id, count(*) / count(distinct date_trunc('month', date))
    from t
    group by item_id;
    

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多