2016-10-15 3 views
-2
SELECT manager_id, COUNT(manager_id) 
FROM employees 
GROUP BY manager_id 
HAVING COUNT(manager_id) > 3 

У меня нет никаких проблем с кодом, но я хочу, чтобы отобразить менеджер имя и фамилию вместо manager_id, однако, если я делаю это, я получаю ошибку: "column" employees.first_name "недействителен ... не содержится ни в агрегатной функции, ни в группе по условию". Я попытался добавить first_name и last_name в группу, причем вывод пуст. Пробовал сам присоединиться, а также не может понять ответ. Запрос включает в себя: EMPLOYEE_ID, first_name, last_name, manager_idSQL с помощью выбора с группой по

Приведенный выше запрос дисплеев:

manager_id (No column name) 
100 14 
120 8 
121 8 
122 8 
123 8 
124 8 
145 6 
146 6 
147 6 
148 6 
149 6 

Хочу:

first_name last_name 

Bob  Smith 
+0

Я предполагаю, что где-то есть таблица менеджеров? –

+0

Покажите нам запрос, который вы пытались выполнить. – artm

+0

Я предполагаю, что вы используете 'sql server', а не' mysql'. В любом случае, пожалуйста, покажите образцы данных и ожидаемые результаты. – sgeddes

ответ

2
SELECT ISNULL(m.name, 'None') AS ManagerName, COUNT(1) 
    FROM employees e 
    LEFT JOIN employees m 
    on e.manager_id = e.employee_id 
    GROUP BY ISNULL(m.name, 'None') 
    HAVING COUNT(1) > 3 

Количество Примечание (1) является такой же, как count (*), но немного меньше работает на сервере.

+0

'count (1) совпадает с count (*), но немного меньше работает на сервере. Любая ссылка на это? – Squirrel

+0

@Squirrel, I Googled around, и похоже, что разница была оптимизирована - в прошлом это спасло бы поездку в таблицу Columns. – JBrooks

Смежные вопросы