Подсчет общего количества строк для каждой группы в SQL и строк, соответствующих определенным условиям - PullRequest
0 голосов
/ 01 июля 2019

У меня есть таблица, где хранится информация о сотрудниках и курсах:

Employee    Course    Attends
01          00001     yes
02          00001     no
03          00001     yes
04          00002     yes
05          00002     no

То, что я хотел бы получить для каждого курса, это количество зарегистрированных людей и количество посещавших их, а также процент посещаемости каждого курса. Подводя итог, мой результат запроса будет выглядеть следующим образом:

Course    Employees registered    Employees with attendance   Perc. attendance
00001     3                       2                           66
00002     2                       1                           50

Как мне этого добиться? Спасибо!

1 Ответ

1 голос
/ 01 июля 2019

Вы можете сделать это с помощью условного агрегирования:

select course, count(*) as num_registered,
       sum(case when attends = 'yes' then 1 else 0 end) as num_attends,
       avg(case when attends = 'yes' then 100.0 else 0 end) as percent_attends
from t
group by course;
...