我有一个错误-
选择列表中的“ Employee.EmpID”列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
这种情况符合Bill Karwin的回答。
上面的更正,适合ExactaBox的回答-
select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
原始问题-
对于SQL查询-
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)
我不明白为什么会收到此错误。我要做的就是加入表格,然后将特定位置的所有员工分组在一起。
我认为我对自己的问题有部分解释。 告诉我是否还可以-
要对在同一位置工作的所有员工进行分组,我们必须首先提及LocationID。
然后,我们不能/不在其旁边提及每个员工ID。相反,我们提到了该位置的员工总数,即,我们应该SUM()在该位置工作的员工。我不确定为什么要采用后一种方式。因此,这解释了错误的“它不包含在任何一个聚合函数中”部分。
GROUP BY
错误的子句部分的解释是什么?
假设我有下表T
:
a b
--------
1 abc
1 def
1 ghi
2 jkl
2 mno
2 pqr
我执行以下查询:
SELECT a, b
FROM T
GROUP BY a
输出应具有两行,其中一行a=1
位于,第二行位于a=2
。
但是 b 的值应该在这两行中的每行上显示什么?每种情况下都有三种可能性,查询中没有任何内容可以清楚地说明为每个组中的b选择哪个值。这是模棱两可的。
这说明了 单值规则 ,该 规则 禁止您在运行GROUP
BY查询时获得未定义的结果,并且在选择列表中包括既不属于分组条件也不包含在聚合函数中的任何列(SUM, MIN,MAX等)。
修复它可能是这样的:
SELECT a, MAX(b) AS x
FROM T
GROUP BY a
现在很明显,您需要以下结果:
a x
--------
1 ghi
2 pqr
问题内容: 我正在尝试返回一个表格,其中包含使用嵌套集模型表示的层次结构中节点的深度,我正在按照本教程进行操作,但是“查找节点的深度”部分中使用的查询对我不起作用:http://mikehillyer.com/articles/managing- hierarchical-data-in-mysql/ 运行此查询,我得到一个错误“ 列’CompanyGroup.GroupName’在选择列表中无效
好的,我正在使用hibernate在我的SpringBoot应用程序中运行下面的SQL本机查询,请注意这个查询在SQL Management Studio中运行良好,并返回一些结果。在我的IDE中,我可以使用JDBC驱动程序连接到我的SQL Server2017,我仍然可以运行这个查询并返回一些结果,现在是奇怪的部分,当相同的查询在应用程序中运行时,我会得到以下错误: 我实际上得到了适当的输出,那
我知道这个主题已经讨论了类似的问题,我已经看过了答案,但不幸的是,我只是不知道如何应用于这个查询。我知道将'pe.short_name'添加到GROUP BY也不是处理这个问题的最佳方法。非常感谢任何建议。 列'pe.short_name'在select列表中无效,因为它包含在聚合函数或GROUP BY子句中.`
我有一个如下所示的查询 但当我执行上面的sql时,出现了一个错误: 预期结果: 上面的SQL有什么问题?
我们有一个表,它将捕获每个的刷卡记录。我正在尝试编写一个查询,以获取今天第一次刷取的非重复员工记录列表。 我们正在列中保存刷卡日期信息。下面是我的查询,它抛出异常。 获取错误: 列“interface.dbo.vwempSwipeDetail.Employee First Name”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 有什么需要帮忙的吗? 提前道谢。