Как я могу рассчитать коэффициент, который express пропорциональность сгруппирована по другому столбцу? - PullRequest
0 голосов
/ 30 марта 2020

Добрый день всем; Мне задают следующий вопрос: «Перечислите каждый класс и его коэффициент выживания, т. Е. Долю выживших пассажиров в этом классе. Попробуйте округлить число до 2-го десятичного числа git».

Ниже приведен код, который я использую для запроса:

SELECT class, (100*count(survived)/total) as survival_rate
FROM Titanic
WHERE survived == 'yes'
GROUP BY class
HAVING total = (SELECT class, count(class) as total
FROM Titanic
GROUP  BY class)

Код явно не работает, но я не могу найти решение вопроса, который мне задают. Большое спасибо за вашу драгоценную помощь.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Вы можете group by class и округлить среднее значение выражения survived = 'yes':

select class, round(100.0 * avg(survived = 'yes'), 2) as survival_rate 
from Titanic 
group by class
0 голосов
/ 30 марта 2020

Мне нравится использовать условную агрегацию для этого:

SELECT class,
       AVG(CASE WHEN survived = 'yes' THEN 1.0 ELSE 0 END) as survival_rate
FROM Titanic
GROUP BY class;

Это дает значение в виде отношения. Если вы хотите, чтобы в процентах, вы можете изменить 1,0 на 100,0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...