Oracle
 sql >> Baza danych >  >> RDS >> Oracle

MAX() w ORACLE SQL

Kolumny dodane w klauzuli SELECT bez funkcji agregującej powinny znajdować się w klauzuli GROUP BY.

Aby było trochę jasne:
Weź ten przykład:

Masz TransactionID, AccountID, TransactionAmount, TransactionDate w klauzuli SELECT i potrzebujesz SUM(TransactionAmount) we wszystkich datach, w takim przypadku, jeśli dodasz

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

Następnie pojawi się błąd, dlaczego, ponieważ
Załóżmy, że masz 4 transakcje w 20160101, a każda kwota transakcji wynosi 1000 USD
Twoje oczekiwany wynik będzie

TransDate      TransAmt
 20140101          4000

W takim przypadku, jeśli wprowadzisz inne atrybuty w klauzuli SELECT, takie jak AccountID i TransactionID, dokąd one trafią? Dlatego musimy uwzględnić wszystkie atrybuty w klauzuli GROUP, cokolwiek w klauzuli SELECT, z wyjątkiem tego, który jest z funkcją AGGREGATE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa serwera sql TOP w Oracle

  2. Klasa puli połączeń Oracle

  3. Wywołanie procedury od wyroczni do kryształowego raportu

  4. Podczas otwierania połączenia Oracle obiekt połączenia jest pusty

  5. Ramka danych R do tabeli Oracle SQL:nie można przydzielić pamięci