【问题标题】:find which percentile group does a user belong to in mysql在mysql中查找用户属于哪个百分位组
【发布时间】:2021-01-18 00:45:04
【问题描述】:

希望有人可以提供帮助。 我有下表

我现在想根据 GMV 列将用户分为 4 个不同的组,分别是

所以基本上我想添加一个名为 Percentile_group 的列,它看起来像这样:

user_id    monthYear     gmv   percentile_group
 414       jan 2020     3168       40
 2257      jan 2020     1452       60
 .          .            .         .
 .          .            .         .
 .          .            .         .

我尝试计算 4 个百分位数,然后比较值,但百分位数错误。

SELECT CAST(SUBSTRING_INDEX(SUBSTRING_INDEX( GROUP_CONCAT(gmv ORDER BY 
gmv SEPARATOR ','), ',', 50/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) 
AS 50th_Per from table

有人可以帮帮我吗?

【问题讨论】:

  • 哪个版本的 MySQL?并且,请不要使用图像来显示示例数据。使用文本并将其缩进四个空格。请edit您的问题。

标签: mysql group-by window-functions percentile


【解决方案1】:

如果你运行的是 MySQL 8.0,你可以使用 ntile() 来做这个:

select t.*, ntile(4) over(order by gmv) percentile_group
from mytable t

这会创建四个组,从14,其中1gmvs 最低的组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2021-11-22
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多