我有两列person_typetime_in。我试图在每个对应的小时中找到person_type的百分比。我的数据库如下所示:

person_type || time_in
FT             N/A
FT             0
FT             4
FT             22
FT             23
NL             1
NL             2
NL             3
NL             4
NL             4


我正在尝试创建查询以返回以下输出:

% FT        || time_in
100            N/A
100            0
0              1
0              2
0              3
33             4
100            22
100            23


我尝试了以下代码:

select (
(select count(*) from delivery where person_type = 'FT')
/count(*)) as 'FT %', time_in
from delivery
group by hour
order by hour;


这里的问题是我的子查询为每个time_in值返回5,所以当前输出如下:

% FT        || time_in
500            N/A
500            0
500            1
500            2
500            3
166            4
500            22
500            23


如果我在子查询中按time_in进行分组,则会收到一条错误消息,指出该查询返回多个值。

最佳答案

您可以使用条件聚合。为此,我认为avg()是最简单的逻辑:

select time_in,
       avg( person_type = 'FT' ) * 100 as percent_ft
from delivery
group by time_in
order by time_in;

关于mysql - 将一列中的值除以另一列中的对应值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56164224/

10-11 04:42