webForumDet fria alternativet

Hämta ett värde och samtidigt få position

Databaser & SQL

6 svar · 496 visningar · startad av mrnoname

Medlem sedan okt. 200670 inlägg
Frågan#1

Om jag har en lista med användares poäng finns det då något enkelt sätt att med sql få ut poängen och vilken position poängen finns på...

Väljer jag tex att hämta ut användarne "mrnoname"'s poäng vill jag även ha ut om "mrnoname" är den med det X bästa av alla.

Eller ska jag hämta hela listan och sen loopa igenom den till rätt användare med något scriptspråk?

Medlem sedan dec. 200012 464 inlägg
#2
select points, 
   (select count(*)
        from t
       where t.points > q.points) + 1 as whereami
 from t as q
 where name = 'mrnoname'
Medlem sedan okt. 200670 inlägg
#3

Tackar!
den fungerar rätt bra men...

Om en användare har lika många poäng får bägge samma whereami och den nästkommande får ett whereami som hoppar över en...
tex
Poäng | Whereami
100 | 1
100 | 1
50 | 3

Hur får jag denna så den ger whereami 1..X, där alla whereami unika

Medlem sedan dec. 200012 464 inlägg
#4

Hur vill du skilja på de som har samma poäng då?

Medlem sedan okt. 200670 inlägg
#5

Bokstavsordning på "name"

Medlem sedan dec. 200012 464 inlägg
#6
select name,
         points, 
   (select count(*)
        from t
       where t.points > q.points
           or (t.points = q.points
          and t.name < q.name)) + 1 as whereami
 from t as q
 where name = 'mrnoname'
Medlem sedan okt. 200670 inlägg
#7

Tackar så mycket för hjälpen...

Måste läsa på mer och lära mig nästlade sqlsatser

490 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
150 ms — deklarationer (db)
0 ms — hämta statistik (cache)
337 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)