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

Изберете последния ред за всяка група от oracle

Можете да използвате аналитични функции

SELECT *
  FROM (SELECT c.*,
               rank() over (partition by user_id order by ts desc) rnk
          FROM comments c)
 WHERE rnk = 1

В зависимост от това как искате да се справите с връзките (ако може да има два реда със същия user_id и ts ), може да искате да използвате row_number или dense_rank функция, а не rank . rank би позволило няколко реда да бъдат първи, ако имаше равенство. row_number би връщал произволно един ред, ако имаше равенство. dense_rank би се държал като rank за редовете, които се изравнят за първи, но биха считали следващия ред за втори, а не за трети, ако приемем, че два реда са равни за първи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединяване на ODP.NET връзки:Как да разберете дали е използвана връзка

  2. Свързване към групи от обекти чрез (ВЪНШНО ПРИЛОЖЕНИЕ) oracle 11.2.0.3.0 не поддържа прилагане

  3. Грешка при присъединяване към актуализиране

  4. TAN() Функция в Oracle

  5. Как да получите втори по големина или трети по големина запис от таблица