使用select with group by的SQL

时间:2016-10-15 00:57:29

标签: sql sql-server

SELECT manager_id, COUNT(manager_id)
FROM employees
GROUP BY manager_id
HAVING COUNT(manager_id) > 3

我对代码没有问题,但是,我想显示管理器的名字和姓氏而不是manager_id,但是如果我这样做,我会收到错误: " column' employees.first_name'无效...不包含在聚合函数或group by子句中#34;。我尝试将first_name和last_name添加到group by,输出为空。尝试过自我加入......无法找到答案。 该查询包括:employee_id,first_name,last_name,manager_id

上面的查询显示:

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

1 个答案:

答案 0 :(得分: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

注意count(1)与count(*)相同,但服务器上的工作量略少。