Недавно я столкнулся с задачей‚ в которой мне необходимо было составить SQL запрос для получения списка ″Занятых сотрудников″ из базы данных. База данных содержит две таблицы ⸺ ″employees″ с полями ″full_name″ и ″job_title″ и ″tasks″ с полями ″name″‚ ″status″‚ ″parent_task″ и ″employee_id″. В поле ″status″ задачи могут иметь три значения⁚ ″создано″‚ ″в работе″ и ″завершено″. Также в таблице ″tasks″ есть внешний ключ ″employee_id″‚ связанный со столбцом ″id″ в таблице ″employees″.Перед тем‚ как я приступил к составлению SQL запроса‚ я представил себе‚ что мне нужно получить на выходе. В конечном итоге‚ мне нужен список сотрудников и их задач‚ отсортированный по количеству задач в работе.Итак‚ я начал составлять запрос⁚
sql
SELECT
e.full_name‚
e.job_title‚
COUNT(t.status) AS task_count
FROM
employees e
LEFT JOIN
tasks t ON e.id t.employee_id
WHERE
t.status ‘в работе’
GROUP BY
e.full_name‚
e.job_title
ORDER BY
task_count DESC;
Давайте разберем‚ что происходит в этом запросе⁚
1. Я использовал оператор SELECT‚ чтобы выбрать необходимые столбцы из таблицы ″employees″ ー ″full_name″ и ″job_title″. Также я использовал функцию COUNT‚ чтобы посчитать число задач в работе для каждого сотрудника и назвал этот столбец ″task_count″.
2. Затем я использовал оператор FROM‚ чтобы указать‚ из каких таблиц брать данные. Я использовал таблицу ″employees″ и сделал левое соединение (LEFT JOIN) с таблицей ″tasks″. Левое соединение гарантирует‚ что мы получим все записи из таблицы ″employees″‚ включая сотрудников‚ которые не имеют задач.
3. Чтобы связать две таблицы‚ я использовал условие с оператором ON‚ где указал‚ что столбец ″id″ из таблицы ″employees″ должен быть равен значению столбца ″employee_id″ из таблицы ″tasks″.
4. Далее я использовал оператор WHERE‚ чтобы отфильтровать только задачи с статусом ″в работе″.
5. Затем я использовал оператор GROUP BY‚ чтобы сгруппировать результаты по полным именам сотрудников и их должностям. Это позволит получить уникальные комбинации сотрудника и его должности в результирующей выборке.
6. В конце я использовал оператор ORDER BY для сортировки результирующей выборки по убыванию количества задач в работе.
После выполнения этого запроса‚ я получил список занятых сотрудников‚ отсортированный по количеству задач в работе. Это позволило мне легче определить‚ какие сотрудники сейчас наиболее заняты и имеют больше всего задач в работе.
Я надеюсь‚ что эта статья помогла вам понять‚ как составить SQL запрос для получения списка ″Занятых сотрудников″ из базы данных.