Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用select和GROUPBY的SQL_Sql_Sql Server - Fatal编程技术网

使用select和GROUPBY的SQL

使用select和GROUPBY的SQL,sql,sql-server,Sql,Sql Server,我对代码没有问题,但是,我想显示经理的名字和姓氏,而不是经理的id,但是如果我这样做,我会得到错误: “列'employees.first_name'无效…未包含在聚合函数或group by子句中”。我尝试将first_name和last_name添加到group by,输出为空。也尝试了自我加入。。我想不出答案。 查询内容包括:员工id、姓名、姓氏、经理id 上面的查询显示: SELECT manager_id, COUNT(manager_id) FROM employees GROUP B

我对代码没有问题,但是,我想显示经理的名字和姓氏,而不是经理的id,但是如果我这样做,我会得到错误: “列'employees.first_name'无效…未包含在聚合函数或group by子句中”。我尝试将first_name和last_name添加到group by,输出为空。也尝试了自我加入。。我想不出答案。 查询内容包括:员工id、姓名、姓氏、经理id

上面的查询显示:

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

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

注意计数(1)与计数(*)相同,但在服务器上的工作量稍小

我假设某个地方有一个管理器表?向我们显示您尝试的失败查询。我假设您使用的是
sql server
,而不是
mysql
。无论哪种方式,请显示示例数据和预期结果。这都不会产生任何结果:从员工e1中选择e1.first\u name,e1.last\u name在e1.manager\u id=e2.employee\u id组中加入员工e2。按e1.manager\u id分组,e1.first\u name,e1.last\u name有计数(e2.employee\u id)>3是,我使用的是sql Server假设我理解了您的表结构和示例数据,那么您的查询看起来非常接近(尽管没有完整的示例数据和预期结果,但仍然有些猜测)。将
join
标准中
上的
中的
e1
e2
中的列反转,这样可能会起作用。这里有一个浓缩的提琴:
count(1)与count(*)相同,但在服务器上的工作量稍微少一些
有关于这个的参考吗?@Squirrel,我在谷歌上搜索了一下,看起来差异已经被优化掉了——在过去,它可以节省到Columns表的时间。
first_name last_name

Bob        Smith
    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