sql >> Databáze >  >> RDS >> Oracle

MAX() v ORACLE SQL

Sloupce, které jste přidali do klauzule SELECT bez agregační funkce, by měly být v klauzuli GROUP BY.

Aby to bylo trochu jasné:
Vezměte si tento příklad:

V klauzuli SELECT máte TransactionID, AccountID, TransactionAmount, TransactionDate a potřebujete SUM(TransactionAmount) pro všechna data, v takovém případě, pokud přidáte

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

Pak dostanete chybu, proč, protože
Předpokládejme, že máte 4 transakce v roce 20160101 a každá transakceAmount je 1000 $
Vaše očekávání bude

TransDate      TransAmt
 20140101          4000

V tomto případě, pokud do klauzule SELECT přinesete další atributy, jako je AccountID a TransactionID, kam půjdou? To je důvod, proč musíme do klauzule GROUP zahrnout všechny atributy v klauzuli SELECT kromě toho, který je s funkcí AGGREGATE.



  1. MySQL versus PDO

  2. jak spojit dvě tabulky na společných atributech v mysql a php?

  3. MySQL Levé spojení s dotazem na křížové spojení

  4. Plán provádění funkcí v PostgreSQL