2013-11-26 12 views
6

Ho difficoltà a far sì che la query dello sviluppatore di Oracle venga emessa correttamente. Quando ho la funzione AVG in esso, non mi dà un errore di gruppo singolo. Quando lo tolgo, funziona bene. Ho provato a usare il gruppo anziché l'ordine, ma poi mi dice che non è un gruppo per espressione.Errore di funzione SQL non gruppo singolo

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; 

risposta

13

Quando si include una funzione di aggregazione (come avg, sum) nella query, è necessario raggruppare per tutte le colonne che non si aggregano.

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; 

O

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; 

Nota
Ogniqualvolta una funzione di aggregazione (SUM, COUNT, AVG, MIN, MAX, ..) è utilizzato in tutte le altre SELECT colonna che SELECT che non sono contenuti in qualsiasi funzione aggregata deve venire in GROUP BY clausola

0

Si utilizza una funzione di aggregazione e per fare in modo da avere al gruppo di tutti i dati che avrebbe dovuto essere aggregate.

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

Per i vostri campi aggiunti, non ha utilizzato gruppo da, quindi si stanno ottenendo questo errore, in modo includendo che i campi appena aggiunto al gruppo di si risolvere il problema e di gruppo tutti i dati che avrebbe devono essere aggregati