Hallo Ihr Lieben,
wie kann man die TOP 10 inklusive Rang einer Tabelle bestimmen ohne spezifische Erweiterungen wie LIMIT, TOP, ROWNUM, FETCH o.ä. zu verwenden?
Z.B für folgende Tabelle:
Spiel
ID / Punkte
3 3
12 7
15 2
17 10
20 8
21 12
31 5
32 7
35 6
37 9
.. ..
Mir fallen nur sehr "künstliche Lösungen" wie z.B. folgendes ein:
select ID, Punkte, 1 AS Rang
from Spiel
where Punkte = (Select max(Punkte) from Spiel)
UNION ALL
select ID,Punkte, 2 AS Rang
from Spiel
where Punkte = (select max(Punkte) from Spiel where Punkte <(select max(Punkte) from Spiel))
UNION ALL
......
und dann kämen immer mehr dieser verschachtelten Klammern hinzu um den zuvor maximalen auszuschließen
Das erscheint mir etwas aufgebauscht. Gibts da eine geschickte Lösung wie gesagt ohne Nutzung spezifischer Erweiterungen?
Über Rückmeldungen würde mich mich sehr freuen!
wie kann man die TOP 10 inklusive Rang einer Tabelle bestimmen ohne spezifische Erweiterungen wie LIMIT, TOP, ROWNUM, FETCH o.ä. zu verwenden?
Z.B für folgende Tabelle:
Spiel
ID / Punkte
3 3
12 7
15 2
17 10
20 8
21 12
31 5
32 7
35 6
37 9
.. ..
Mir fallen nur sehr "künstliche Lösungen" wie z.B. folgendes ein:
select ID, Punkte, 1 AS Rang
from Spiel
where Punkte = (Select max(Punkte) from Spiel)
UNION ALL
select ID,Punkte, 2 AS Rang
from Spiel
where Punkte = (select max(Punkte) from Spiel where Punkte <(select max(Punkte) from Spiel))
UNION ALL
......
und dann kämen immer mehr dieser verschachtelten Klammern hinzu um den zuvor maximalen auszuschließen
Das erscheint mir etwas aufgebauscht. Gibts da eine geschickte Lösung wie gesagt ohne Nutzung spezifischer Erweiterungen?
Über Rückmeldungen würde mich mich sehr freuen!