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

Zwróć wiersz z maksymalną wartością jednej kolumny na grupę

Jest to również możliwe bez podzapytania:

SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

Zwraca dokładnie to, o co prosiłeś.
Najważniejsze jest to, że DISTINCT jest stosowany po funkcje okna.

Skrzypce SQL.

Może szybciej, ponieważ używa dwa razy tego samego okna:

SELECT DISTINCT
       id
      ,first_value(round) OVER (PARTITION BY id ORDER BY round DESC) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

W przeciwnym razie robi to samo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Plik zrzutu rdzenia i dodawanie kodów debugowania w aplikacji wykonywalnej dla aplikacji Oracle

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP nie może być rzutowany na java.sql.Timestamp

  3. Wartości oddzielone przecinkami do funkcji IN w Oracle

  4. Używanie TUPLES do umieszczania ponad 1000 wpisów w klauzuli SQL IN

  5. Błąd 404 nie został znaleziony w EM 12c