【问题标题】:Count distinct id between months previous year and same months current year Bigquery计算上一年和当年同月之间的不同ID Bigquery
【发布时间】:2021-10-21 07:03:10
【问题描述】:

我在 bigquery 中有一个数据集,其中包含 order_date: DATE 和 customer_id。

order_date |    CustomerID
2020-01-01 |    111
2020-02-01 |    112
2020-03-01 |    111
2021-01-01 |    113
2021-02-01 |    115
2021-03-01 |    119

如何计算上一年的月份和当年的相同月份之间的不同 customer_id? 例如,从 2020-01-01 到 2021-01-01,然后从 2020-02-01 到 2021-01-01,依此类推,直到当前日期,应按最晚日期分组。输出看起来像

order_date| count distinct CustomerID
2021-01-01| 5191
2021-02-01| 4859
2021-03-01| 3567
..........| ....

接下来的期间不应包括之前的。

提前致谢。

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    如果您只想要每个月的计数,您可以扩展数据并汇总:

    select mon, count(distinct customerid)
    from t cross join
         unnest(generate_date_array(t.order_date, date_add(t.order_date, interval 11 month), interval 1 month)) mon
    group by mon
    order by mon;
    

    【讨论】:

    • 非常感谢您的回复。我期待以下结果:计算 01/01/2021 和 01/01/2021 之间的不同 id,它应该按最新日期分组。然后计算 02/02/2020 和 02/01/2021 之间的不同 ID,依此类推到当前日期。只是想统计当年的客户。
    • @MatBailie 是的!对我来说,它工作得很好!太棒了!
    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多