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

Получаване на стойност въз основа на максимума на различна колона, групирана от друга колона

Можете да подходите към това с помощта на row_number() :

select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;

Дали смятате това за по-„елегантно“ вероятно е въпрос на вкус.

Трябва да отбележа, че това е малко по-различно от вашето запитване. Това гарантирано ще върне един ред за всеки key; вашият може да върне няколко реда. Ако искате това поведение, просто използвайте rank() или dense_rank() вместо row_number() .




  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 11g

  2. UNPIVOT върху неопределен брой колони

  3. Има ли Oracle SQL заявка, която обединява множество редове в един ред?

  4. ORA-12154 не можа да разреши посочения идентификатор за свързване

  5. JDBC ResultSet:Имам нужда от getDateTime, но има само getDate и getTimeStamp