Oracle
 sql >> Database >  >> RDS >> Oracle

MAX() in ORACLE SQL

Le colonne che hai mai aggiunto nella clausola SELECT senza una funzione di aggregazione dovrebbero essere nella clausola GROUP BY.

Per chiarire un po':
Prendi questo esempio:

Hai TransactionID, AccountID, TransactionAmount, TransactionDate nella tua clausola SELECT e hai bisogno di SUM(TransactionAmount) in tutte le date, in tal caso, se aggiungi

SELECT TransactionDate, TransactionID, AccountID, SUM(TransactionAmount) 
FROM Table 
GROUP BY TransactionDate

Quindi riceverai un errore, perché
Supponi di avere 4 transazioni nel 20160101 e ogni transazioneAmount è $ 1000
Le tue aspettative di risultato saranno

TransDate      TransAmt
 20140101          4000

In questo caso, se porti altri attributi nella clausola SELECT come AccountID e TransactionID, dove andranno? Questo è il motivo per cui dobbiamo includere tutti gli attributi nella clausola GROUP nella clausola SELECT eccetto quello che è con la funzione AGGREGA.