在mysql中混合和集中

时间:2019-05-05 22:20:28

标签: mysql sql

我大约有10万行,需要按百分比进行分类 对于前 前1% 第二个4% 第三5% 1%表示给我总行数的1%

1 个答案:

答案 0 :(得分:0)

在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()可以直接计算值-因此您不必进行除法。