mysql计算新列的对应百分比

yyhrrdl8  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(315)

mysql 8.0版
嗨,假设我有一张这样的表:这是我在groupby count操作后得到的:

select number
     , count(number) as `count`
FROM (select *
           , CASE 
               WHEN column = 0 Then 0 Else 1 
             END AS number
      FROM table) t1;

导致:

number     count
  0         100
  1         900

现在我要为每个数字添加一列,给出相应的百分比。
渴望的:

number     count   percentage
  0         100        10
  1         900        90

提前谢谢!

q5iwbnjs

q5iwbnjs1#

如果您运行的是mysql 8.0,则可以使用窗口函数:

select
    t.*,
    count / sum(count) over() ratio
from mytable t

在早期版本中,选项使用子查询:

select
    t.*,
    count / (select sum(count) from mytable) ratio
from mytable t

这给你一个 0 以及 1 ; 你可以把它乘以 100 如果你想要一个百分比。
请注意,如果您是从查询中获取原始结果集,则很可能可以对其进行进一步优化。您可能想问一个新问题,公开原始表和查询。

0ve6wy6x

0ve6wy6x2#

就您最初的查询而言,它类似于:

select number, count(*), count(*) / sum(count(*)) over () as ratio
from t
group by number;

如果你想要的是百分比而不是比率,而不是乘以100。

相关问题