【问题标题】:Calculate Rolling retention with SQL (BigQuery)使用 SQL (BigQuery) 计算滚动保留
【发布时间】:2021-07-15 21:45:28
【问题描述】:

我有一个包含此类列的登录表:

id - unique id of user
day - days passed since registration (0-30)

此表中的每条记录都是用户登录的记录,因此可能存在相同的行(因为用户一天可以登录多次)。所以我必须计算有多少用户在他们生命中的某一天(30 天)或之后的任何一天(滚动保留)登录。输出表应包含包含天数 (1-30) 和用户数量的列。如果用户在第 30 天登录,我们将他视为 30 天之前的每一天。有什么想法吗? :)

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    试试这个:

    select single_day, count(distinct id)
    from mytable, unnest(generate_array(1, day)) as single_day
    group by single_day
    

    【讨论】:

    • 看起来它正在工作)你能解释一下,它是如何工作的吗?
    • 加入unnest(generate_array())会将每一行扩展为多行,对应于用户登录前的每一天。count(distinct id) 每天计算不同用户的数量。
    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多