Как вывести все значения из таблицы с использованием 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 для подобных случаев?