Ö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.