SQL 不是单组组函数错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20207508/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 23:15:54  来源:igfitidea点击:

SQL not a single group group function error

sqldatabase

提问by Steven Eck

I am having a hard time getting my oracle developer query to output correctly. When I have the avg function in it, it gives me not a single group group error. When I take it out it works fine. I have tried using group by instead of order by but then it tells me that its not a group by expression.

我很难让我的 oracle 开发人员查询正确输出。当我在其中使用 avg 函数时,它不会给我一个单独的组组错误。当我把它拿出来时,它工作正常。我曾尝试使用 group by 而不是 order by 但它告诉我它不是 group by 表达式。

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
FROM LGPRODUCT, LGBRAND
WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
ORDER BY BRAND_NAME;

回答by Andrew

When you include an aggregate function (like avg, sum) in your query, you must group by all columns you aren't aggregating.

当您在查询中包含聚合函数(如 avg、sum)时,您必须按未聚合的所有列进行分组。

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
FROM LGPRODUCT, LGBRAND
WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
GROUP BY
LGBRAND.BRAND_ID,
LGBRAND.BRAND_NAME
ORDER BY BRAND_NAME

回答by M.Ali

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
FROM LGPRODUCT, LGBRAND
WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
GROUP BY LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME
ORDER BY BRAND_NAME;

OR

或者

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
FROM LGPRODUCT INNER JOIN LGBRAND
ON LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
GROUP BY LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME
ORDER BY BRAND_NAME;

Note
Whenever an aggregate function(SUM, COUNT, AVG, MIN, MAX,..) is used in SELECTall the other column in that SELECT that are not contained in any aggregate function must come in GROUP BYclause

注意
每当在该 SELECT 中未包含在任何聚合函数SUM, COUNT, AVG, MIN, MAX,中的SELECT所有其他列中使用聚合函数 ( ..)时,必须进入GROUP BY子句

回答by Jorge Campos

You are using an AGGREGATION function and in order to do so you have to group all the data that would have to be aggregated.

您正在使用 AGGREGATION 函数,为此您必须对所有需要聚合的数据进行分组。

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE) AS AVGER
  FROM LGPRODUCT, LGBRAND
 WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
group by LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME -- This line here
ORDER BY BRAND_NAME;

回答by Ramu Vemula

For your newly added fields, you didn't used group by, hence you are getting this error, so by including that newly added fields to group by you will resolve this error and group all the data that would have to be aggregated.

对于新添加的字段,您没有使用 group by,因此您会收到此错误,因此通过将新添加的字段包含到 group by,您将解决此错误并将所有必须聚合的数据分组。