Как вывести все значения из таблицы с использованием JOIN?

У меня есть две таблицы:

roles

id name
1 Менеджер
2 Дизайнер
3 Программист
4 Маркетолог

И employyes

id first_name last_name active sex role_id
1 Дмитрий Федьков True m 1
2 Светлана Иванова True w 2
3 Никита Трутнев True m 3
4 Денис Кац True m 3
5 Алена Сорокина True w NULL
6 Василий Федьков False m 1
7 Ярослав Сорокин True m 2
8 Денис Белый True m 2
9 Анатолий Дейчман True m 3
10 Юлия Фёдорова False w NULL

Мне необходимо получить список всех должностей и количество активных сотрудников для каждой должности. То есть на выходе должно быть

Дизайнер - 3 Программист - 3 Менеджер - 1 Маркетолог - 0

Я использую следующий код:

SELECT r.name, COUNT(e.id) AS employees
FROM roles AS r
LEFT OUTER JOIN employees AS e ON r.id = e.role_id
WHERE e.active = TRUE
GROUP BY r.name
ORDER BY employees DESC, r.name

Но в этом случае "Маркетолог" не выводится, так как у него 0 сотрудников. WHERE условие убрать не могу, так как нужны только активные сотрудники.

Подскажите, что можно использовать в этой ситуации? Какой-то другой JOIN? Или может какой-то аналог WHERE для подобных случаев?


Ответы (0 шт):