Oracle
 sql >> база данни >  >> RDS >> Oracle

Върнете ред с максимална стойност от една колона на група

Това е възможно и без подзаявка:

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;

Връща точно това, което сте поискали.
Решаващият момент е, че DISTINCT се прилага след функции на прозореца.

SQL Fiddle.

Може би по-бързо, защото използва един и същ прозорец два пъти:

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;

В противен случай правим същото.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво може да причини промяна на Oracle ROWID?

  2. Как се изчислява коефициентът на клъстериране на Oracle Index

  3. Закръгляване до 2 знака след десетичната запетая в SQL

  4. ORA-01843 не е валиден месец- Сравняване на дати

  5. Процедура за експортиране на таблица в множество csv файлове