2013-11-26 10 views
6

oracleデベロッパー・クエリーを正しく出力するのに苦労しています。私はavg関数を持っているとき、それは私に単一のグループ・エラーではない。私はそれを取るとき、それはうまく動作します。私はorder byの代わりにgroup byを使用しようとしましたが、それは表現でグループではないことを私に伝えます。SQLが単一のグループ・グループ関数エラーではありません

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; 

答えて

13

クエリに集計関数(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 
2
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; 


集約関数(SUM, COUNT, AVG, MIN, MAX,は..)に含まれないSELECTでSELECTの他のすべての列で使用されるときはいつでも集計関数はGROUP BY

に入っている必要があります10
0

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; 
0

新しく自分でグループにフィールドを追加することを含めて、このエラーやグループがその希望するすべてのデータを解決しますので、あなたは、それゆえあなたはこのエラーを取得している、してグループを使用していませんでした集約する必要があります。

関連する問題