sql >> Databasteknik >  >> RDS >> Oracle

Välj den senaste raden för varje grupp från oracle

Du kan använda analytiska funktioner

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

Beroende på hur du vill hantera kopplingar (om det kan finnas två rader med samma user_id och ts ), kanske du vill använda row_number eller dense_rank funktion snarare än rank . rank skulle tillåta flera rader att vara först om det var oavgjort. row_number skulle godtyckligt returnera en rad om det var oavgjort. dense_rank skulle bete sig som rank för raderna som var oavgjorda för första men skulle betrakta nästa rad som andra snarare än tredje förutsatt att två rader var lika för första.



  1. count(*) och count(column_name), vad är skillnaden?

  2. Lägg till månader till ett datum i PostgreSQL

  3. SQLAlchemy create_all() skapar inte tabeller

  4. Hur exporterar man tabell som CSV med rubriker på Postgresql?