sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-vensterfunctie:row_number() over (partitioneer col volgorde op col2)

Overweeg partition by om vergelijkbaar te zijn met de velden die u zou group by , dan, wanneer de partitiewaarden veranderen, start de vensterfunctie opnieuw op 1

EDITas aangegeven door a_horse_with_no_name, voor deze behoefte hebben we dense_rank() nodig in tegenstelling tot row_number() rank() of dense_rank() herhaal de nummers die het toewijst. row_number() moet een andere waarde zijn voor elke rij in een partitie. Het verschil tussen rank() en dense_rank() is de laatste geen nummers "overslaan".

Probeer voor uw vraag:

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

Je verdeelt trouwens niet op en sorteert op hetzelfde veld; gewoon bestellen door zou voldoende zijn als dat nodig was. Het is er niet.




  1. Toegang tot docker-container mysql-databases

  2. CONCAT gebruiken met MySQL-triggers (fout bij ,)

  3. SQL:wat is de standaardvolgorde van query's?

  4. Hoe kan ik kolomopmerkingen in PostgreSQL invoegen via Python?