MySQL Group, рассчитывающий на процент - PullRequest
0 голосов
/ 12 июня 2018

Вот мои данные:

BadgeID | Session | Session Type | My_Interest_Area | 
___________________________________________
12345   | PG1     | Symposium    | COPD
12345   | PG1     | Symposium    | Asthma
12345   | PG2     | Symposium    | COPD
12345   | PG2     | Symposium    | Asthma
12345   | PG3     | Workshop     | COPD
12345   | PG3     | Workshop     | Asthma
54321   | PG1     | Symposium    | ARDS
54321   | PG1     | Symposium    | Asthma

Я пытаюсь получить этот результат:

Interest Area | Symposium Count| Workshop Count
____________________________________
COPD          | 1              | 1
Asthma        | 2              | 1
ARDS          | 1              | 0

Сначала я думал использовать предложение Where и отделить каждый тип сеанса:

select CDS_Interest_Areas as "Interest Area", round(COUNT(DISTINCT(BadgeID))/count(BadgeID)*100,0) as "Percent" from interest_areas_dataset where CDS_Interest_Areas IS NOT null and `Session Type` = "Symposium"
group by CDS_Interest_Areas

Использование условия «Где» для меня не требуется.Я просто хотел бы получить результаты.

Кроме того, я хотел бы получить проценты.Процент, обозначенный как «Область интересов», составляет указанный «Тип сеанса».

Пример: Симпозиум имеет 10% астмы, 5% ХОБЛ и т. Д. ...

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете использовать conditional aggregation вместе с distinct для получения ожидаемых результатов:

select My_Interest_Area,
   count(distinct (case when `Session Type` = 'Symposium' then badgeid end)) SymposiumCount,
   count(distinct (case when `Session Type` = 'Workshop' then badgeid end)) WorkshopCount
from interest_areas_dataset 
group by My_Interest_Area
...