PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonction de fenêtre PostgreSQL :row_number() over (partition col order by col2)

Envisagez de partition by être similaire aux champs que vous souhaitez group by , puis, lorsque les valeurs des partitions changent, la fonction de fenêtrage redémarre à 1

EDITcomme indiqué par a_horse_with_no_name, pour ce besoin nous avons besoin de dense_rank() contrairement à row_number() rank() ou dense_rank() répéter les numéros qu'il attribue. row_number() doit être une valeur différente pour chaque ligne d'une partition. La différence entre rank() et dense_rank() est ce dernier ne "saute" pas les numéros.

Pour votre requête, essayez :

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

Au fait, vous ne partitionnez pas et ne commandez pas le même champ ; juste commander par serait suffisant si c'était le besoin. Ce n'est pas ici.