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

Wybierz ostatni wiersz dla każdej grupy z Oracle

Możesz używać funkcji analitycznych

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

W zależności od tego, jak chcesz obsłużyć powiązania (jeśli mogą istnieć dwa wiersze z tym samym user_id i ts ), możesz użyć row_number lub dense_rank funkcja zamiast rank . rank pozwoliłoby, aby wiele rzędów było pierwszymi, gdyby był remis. row_number arbitralnie zwróciłby jeden wiersz, gdyby był remis. dense_rank zachowywałby się jak rank dla rzędów, które remisowały na pierwszym miejscu, ale uważałyby, że następny rząd jest drugim, a nie trzecim, zakładając, że dwa rzędy są remisujące dla pierwszego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 9 najczęściej zadawanych zapytań dotyczących drukarek Oracle Apps

  2. Dlaczego porządek sortowania varchar Oracle nie odpowiada zachowaniu porównania varchar?

  3. Firmy programistyczne, które pracują nad Oracle D2k, PLSQL Technologies w Noida

  4. TNSPING OK ale sqlplus daje ORA-12154?

  5. Jak uzyskać aktualny obiekt Connection w Spring JDBC?