Проекты и сотрудники: всего и неуволенных

SQLJunior20 минпроверка — Спринтзапрос · PostgreSQL14-t003

Компания: проекты и сотрудники (many-to-many — сотрудник работает в нескольких проектах). Сотрудник может быть уволен. Эталонная схема: projects, employees (is_fired), project_employees.

Одним запросом выведи для каждого проекта: id, name, количество всех сотрудников (total) и количество неуволенных (active). Проекты без сотрудников — с нулями.

schema.sqlsql
1CREATE TABLE projects (2    id   int  PRIMARY KEY,3    name text NOT NULL4);5CREATE TABLE employees (6    id       int     PRIMARY KEY,7    name     text    NOT NULL,8    is_fired boolean NOT NULL DEFAULT false9);10CREATE TABLE project_employees (11    project_id  int NOT NULL REFERENCES projects (id),12    employee_id int NOT NULL REFERENCES employees (id),13    PRIMARY KEY (project_id, employee_id)14);15INSERT INTO projects VALUES (1, 'billing'), (2, 'search'), (3, 'legacy'), (4, 'new');16INSERT INTO employees VALUES17    (1, 'Иван', false), (2, 'Ольга', false), (3, 'Пётр', true), (4, 'Мария', true), (5, 'Сергей', false);18-- legacy — только уволенные, new — никого19INSERT INTO project_employees VALUES (1, 1), (1, 2), (1, 3), (2, 2), (2, 5), (3, 3), (3, 4);
⌘ Enter — проверить