【发布时间】:2019-05-05 22:20:27
【问题描述】:
我有大约 10 万行,需要按百分比对它们进行分类 例如 前 1% 第二个4% 第三个 5% 1% 表示给我总行数的 1%
【问题讨论】:
我有大约 10 万行,需要按百分比对它们进行分类 例如 前 1% 第二个4% 第三个 5% 1% 表示给我总行数的 1%
【问题讨论】:
在 MySQL 8+ 中,您可以使用窗口函数:
select t.*,
(case when seqnum <= cnt * 0.01 then 'Top 1%'
when seqnum <= cnt * 0.05 then 'Top 5%'
else 'Everything else'
end) as grp
from (select t.*, count(*) over () as cnt,
rank() over (order by ?) as seqnum
from t
) t
? 是指定您关心的排序的列——“前 1%”是什么意思。
MySQL 也有 PERCENT_RANK() 直接计算值 - 所以你不必做除法。
【讨论】: