sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL fönsterfunktion:row_number() over (partition col order by col2)

Överväg att partition by att likna de fält som du skulle group by , sedan, när partitionsvärdena ändras, startar fönsterfunktionen om vid 1

EDITas indikerat av a_horse_with_no_name, för detta behov behöver vi dense_rank() till skillnad från row_number() rank() eller dense_rank() upprepa siffrorna den tilldelar. row_number() måste vara ett annat värde för varje rad i en partition. Skillnaden mellan rank() och dense_rank() är den senare inte "hoppar över" siffror.

För din fråga försök:

dense_rank() over (partition by Username, Game order by ct."date") as "Attempts"

Du delar inte upp och sorterar efter samma fält förresten; bara beställa genom skulle vara tillräckligt om det var behovet. Det är inte här.




  1. ExecuteNonQuery returnerar alltid noll. Kan jag använda detta 0-värde i min kod för validering?

  2. postgresql port confusion 5433 eller 5432?

  3. Exekvera samma SSIS-paket med olika parametrar vid olika tidpunkter

  4. Problem med att skapa PostgreSQL-utlösare