我有两列person_type
和time_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/