У меня есть пример таблицы ниже,
+-------------+-------------+-------------+----------+------------+---------------------------------+----------+---------------+
| employee_id | first_name | last_name | email | joined_date| title | salary | supervisor_id |
+-------------+-------------+-------------+----------+------------+---------------------------------+----------+---------------+
| 100 | John | King | EM1 | 1984-06-17 | CEO | 14000.00 | NULL |
| 101 | Leona | Kochhar | EM2 | 1993-09-21 | COO | 10000.00 | 100 |
| 102 | Lex | De Haan | EM3 | 1992-01-13 | CFO | 9000.00 | 100 |
| 103 | Alexander | Hunold | EM4 | 2001-04-03 | Gamer | 5000.00 | 102 |
| 104 | Dave | William | EM5 | 2002-05-21 | Gamer | 2000.00 | 103 |
| 105 | David | Austin | EM6 | 2002-06-25 | Gamer | 2800.00 | 103 |
| 106 | Valli | Longwind | EM7 | 2002-02-43 | Gamer | 2800.00 | 103 |
Некоторые сотрудники являются руководителями других сотрудников в этой таблице. Обратите внимание, что supervisor_id - это employee_id.
Мне поручено использовать инструкцию SELECT только для получения employee_id, first_name, оклада супервизоров и общего числа сотрудников под супервизором.
In мой разум, я знаю, что мне нужно будет использовать какую-то группировку и считать. Во-первых, СЧИТАЙТЕ количество сотрудников под каждым руководителем, а затем - идентификатор руководителя BY. Мне удалось получить выходные данные, используя простые COUNT и GROUP BY, используя этот запрос:
SELECT employee_id, COUNT(supervisor_id)
FROM EMPLOYEE
GROUP BY supervisor_id;
Это выводит supervisor_id и количество сотрудников в supervisor_id. Что является:
+---------------+----------------------+
| supervisor_id | COUNT(supervisor_id) |
+---------------+----------------------+
| NULL | 0 |
| 100 | 2 |
| 101 | 0 |
| 102 | 0 |
| 103 | 3 |
* Таблица выше слегка изменена - это пример вывода
Как уже упоминалось, supervisor_id - это employee_id сотрудника в той же таблице. Моя проблема в том, что я не могу заставить эту таблицу отображать employee_id, first_name и salary вместе со столбцом COUNT. Конечный результат должен показывать employee_id (связанный с supervisor_id), first_name, salary, COUNT.
Я пробовал это
SELECT employee_id, first_name, salary, COUNT(supervisor_id)
FROM EMPLOYEE
GROUP BY employee_id, first_name, salary, supervisor_id;
Но это просто возвращает исходную таблицу.
Также, когда я пытался это сделать
SELECT employee_id, first_name, salary, COUNT(supervisor_id)
FROM EMPLOYEE
GROUP BY supervisor_id;
Возвращает ошибку «Выражение № 1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец», что в соответствии с онлайн-описанием того, как я создаю свой запрос (может ' смешивать агрегированные и неагрегированные столбцы?).
Кто-нибудь может мне помочь? Спасибо.