Top.Mail.Ru
Ответы

Помогите сделать запрос в mysql

Написать запрос, который выводит кол-во различных ролей для каждого из проектов (должны выводиться названия проектов). Результаты должны быть отсортированы по возрастанию количества различных ролей. Есть таблица проекты (имя_проекта, ид_проекта) и таблица работники (ид_работника, ид_проекта, роль)

По дате
По рейтингу
Аватар пользователя
Просветленный

SELECT project_name, r.roles_count
FROM projects AS p
JOIN
(
SELECT project_id, COUNT (DISTINCT role) AS roles_count
FROM employees
GROUP BY project_id
) r ON p.project_id = r.project_id
ORDER BY 2;

Или ещё вот так

SELECT p.project_name, COUNT (DISTINCT role) AS roles_count
FROM employees as r
GROUP BY project_id
JOIN projects p
ON r.project_id = p.project_id
ORDER BY 2;

Аватар пользователя
Мудрец

в ордер бай нужно так :count(distinct r. role), r. role

Аватар пользователя
Оракул

селект п. имя_проекта, каунт (дистинкт р. роль) фром проекты п
джойн работники р он р. ид_проекта = п. ид_проекта
груп бай п. имя_проекта
ордер бай каунт (дистинкт р. роль)