SELECT lastname, firstname, COUNT(orderid)
FROM customers JOIN orders USING (customerid)
GROUP BY customerid;
我很难理解为什么我会得到SQL Error: ORA-00979: not a GROUP BY expression
的问题,当我用此列单独执行count函数时,它仍然可以查找,即使我在select语句中使用了另一个pk也可以,但是可惜现在无法正常工作,我可以借助一些协助找出原因。
答案 0 :(得分:4)
您需要在select
clause中拥有group by
的所有非聚合列,如下所示。
SELECT customerid,lastname, firstname, COUNT(orderid)
FROM customers JOIN orders USING (customerid)
GROUP BY customerid,lastname, firstname; -- all non-aggregate columns
或者在输出中没有CustomerId。
SELECT lastname, firstname, COUNT(orderid)
FROM customers JOIN orders USING (customerid)
GROUP BY lastname, firstname; -- all non-aggregate columns
答案 1 :(得分:4)
当您使用group by子句时,您的select子句只能在group by子句或某些聚合函数中包含列。它应该看起来像这样:
SELECT lastname, firstname, COUNT(orderid)
FROM customers JOIN orders USING (customerid)
GROUP BY lastname, firstname;
从概念上讲,没有一个不是按列分组或聚合函数的列是没有意义的。在示例查询中,当您为每个customerid生成一个汇总行时,“ lastname”或“ firstname”实际上意味着什么?每个customerid可以具有多个与之关联的名称,并且您的查询未指定如何将它们组合成一行。