sql >> Database >  >> RDS >> Oracle

MAX() in ORACLE SQL

De kolommen die u ooit in de SELECT-component hebt toegevoegd zonder een aggregatiefunctie, moeten in de GROUP BY-component staan.

Om het een beetje duidelijk te maken:
Neem dit voorbeeld:

U hebt TransactionID, AccountID, TransactionAmount, TransactionDate in uw SELECT-clausule en u hebt SUM(TransactionAmount) nodig op alle datums, in dat geval, als u

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

Dan krijg je een foutmelding, waarom omdat
Stel dat je 4 transacties hebt op 20160101 en elk transactiebedrag is $1000
Je verwachte resultaat zal zijn

TransDate      TransAmt
 20140101          4000

Als u in dit geval andere attributen in de SELECT-clausule opneemt, zoals AccountID en TransactionID, waar gaan ze dan naartoe? Dit is de reden waarom we alle attributen in de GROUP-clausule moeten opnemen in de SELECT-clausule, behalve die met de AGGREGATE-functie.



  1. MYSQL voegt geen informatie toe aan mijn database

  2. Opgeslagen procedure/functiedefinitie bekijken in MySQL

  3. Selecteer willekeurige rij uit MySQL (met waarschijnlijkheid)

  4. SQLite hernoemt PRINTF() naar FORMAT()