将一列中的值除以另一列中的对应值

时间:2019-05-16 08:34:19

标签: mysql sql

我有两列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分组,则会收到一条错误消息,指出查询返回的值不止一个。

1 个答案:

答案 0 :(得分:0)

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

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