Разделите значения из одного столбца с соответствующими значениями в другом столбце - PullRequest
0 голосов
/ 16 мая 2019

У меня есть два столбца 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;

Проблема в том, что мой подзапрос возвращает 5 для каждого значения time_in, поэтому мой текущий вывод выглядит так:

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

Если я сгруппировал по time_in в своем подзапросе, то получаю сообщение об ошибке, в котором говорится, что запрос возвращает более одного значения.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать условное агрегирование. Для этого я думаю, что avg() - самая простая логика:

select time_in,
       avg( person_type = 'FT' ) * 100 as percent_ft
from delivery
group by time_in
order by time_in;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...