Сотрудники, привязанные более чем к 5 клинетам онлайн урок.


Рассмотрим запрос для определения сотрудников, за которыми закреплены более чем 5 заказчиков. Для этого, во-первых, необходимо соединить столбцы таблиц заказчиков и сотрудников

workers w JOIN customers c ON w.id = c.worker_id

Будем выводить идентификатор сотрудника, его имя, и количество прикрепленных к нему заказчиков. Для этого добавим эти поля в выборку, применив агрегатную функцию COUNT и группировку GROUP BY по идентификатору сотрудника:

SELECT w.id AS worker_id, w.first_name AS worker_name, COUNT(c.id) AS customers_count
FROM workers w
JOIN customers c ON w.id = c.worker_id
GROUP BY w.id

+-----------+-------------+-----------------+
| worker_id | worker_name | customers_count |
+-----------+-------------+-----------------+
| 7 | Leslie | 28 |
| 8 | Leslie | 6 |
| 9 | Julie | 6 |
| 10 | Steve | 6 |
| 11 | Foon Yue | 7 |
| 12 | George | 8 |
| 13 | Loui | 6 |
| 14 | Gerard | 7 |
| 15 | Pamela | 10 |
| 16 | Larry | 8 |
| 17 | Barry | 9 |
| 18 | Andy | 5 |
| 19 | Peter | 5 |
| 21 | Mami | 5 |
| 23 | Martin | 6 |
+-----------+-------------+-----------------+



Далее, нам необходимо отобрать из этого результата те строки, где количество заказчиков больше 5. Для этого нам понадобится оператор HAVING, который применяет критерий к уже сформированным группам.

SELECT w.id AS worker_id, w.first_name AS worker_name, COUNT(c.id) AS customers_count
FROM workers w
JOIN customers c ON w.id = c.worker_id
GROUP BY w.id
HAVING COUNT(c.id) > 5