【问题标题】:Mix and precentage in mysqlmysql中的混合和百分比
【发布时间】:2019-05-05 22:20:27
【问题描述】:

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

【问题讨论】:

    标签: mysql sql


    【解决方案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() 直接计算值 - 所以你不必做除法。

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 2015-05-04
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 2012-09-25
      • 1970-01-01
      相关资源
      最近更新 更多