【问题标题】:Grouping by percentiles in bigquery在 bigquery 中按百分位数分组
【发布时间】:2021-01-06 16:17:11
【问题描述】:

在这里问这个问题可能有点太容易了,但我似乎无法弄清楚并开始用头撞墙。

我想为我的用户分配 1-5 分,前 20% 的用户(例如登录次数)获得最高分 5,接下来的 20% 获得 4 分,依此类推。 所以从初始表;

SELECT userid, login -- APPROX_QUANTILES(x, 2) AS approx_quantiles
FROM UNNEST([01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]) AS userid,
     UNNEST([ 1, 12, 14,  3,  5, 75, 56,  7,  8,  9, 10,  1, 12, 14, 14,  5, 23, 56,  7, 10]) AS login;

它看起来像表 2;

【问题讨论】:

    标签: sql group-by count google-bigquery window-functions


    【解决方案1】:

    如果我理解正确,你想要ntile()

    select userid, login, ntile(5) over(order by login) nt
    from mytable
    

    根据您开始使用的数据集,您可能需要先按用户聚合:

    select userid, count(*) login, ntile(5) over(order by count(*)) nt
    from mytable
    group by userid
    

    【讨论】:

    • 是的,这正是我所追求的。谢谢:)
    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 2017-10-12
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2021-02-26
    • 2016-11-27
    相关资源
    最近更新 更多