#sql #postgresql
Вопрос:
Как рассчитать процент от количества РАЗЛИЧНЫХ значений? Например, у меня есть набор данных с людьми, которые могут выбрать несколько симптомов (то есть у каждого человека может быть от 0 до 10 значений).
person 1 - symptom A
person 1 - symptom B
person 2 - symptom B
person 2 - symptom C
person 2 - symptom D
person 3 - no symptoms
person 4 - symptom A
и т.д. Например, если общее количество УНИКАЛЬНЫХ людей равно 4 и 2 из них выбрали симптом А, то я хотел бы видеть: А = 2/4 = 50%, а не А=2/6 = 33% (не то, что мне нужно).
Как это сделать?
Ответ №1:
Хммм … если предположить, что симптомы не повторяются у одного человека, то один из методов:
select symptom,
count(*) * 1.0 / (select count(distinct person) from t) as ratio
from t
group by symptom