PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Fensterfunktion:row_number() over (Partition col order by col2)

Betrachten Sie partition by den Feldern ähneln, nach denen Sie group by würden , dann, wenn sich die Partitionswerte ändern, startet die Windowing-Funktion wieder bei 1

BEARBEITEN Wie durch a_horse_with_no_name angegeben, benötigen wir für diesen Bedarf dense_rank() anders als row_number() rank() oder dense_rank() Wiederholen Sie die Nummern, die es zuweist. row_number() muss für jede Zeile in einer Partition ein anderer Wert sein. Der Unterschied zwischen rank() und dense_rank() letzteres "überspringt" keine Nummern.

Versuchen Sie für Ihre Abfrage:

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

Sie partitionieren und sortieren übrigens nicht nach demselben Feld; Eine einfache Bestellung würde ausreichen, wenn dies erforderlich wäre. Es ist nicht hier.