Mastodon

renephoenix.de

Kommentar von Thiemo

Das kommt mir verdammt bekannt vor: Das selbe Problem hatte ich in eine Datenbanken-Klausur eingebaut. Bei mir ging es um Wettkampfergebnisse, wobei ich aus der erzielten Zeit die Platzierung ermitteln möchte. Meine Lösung ist ein (Standard-konformes) Self-JOIN:

SELECT t.nachname, COUNT(kleinere.nachname) + 1 AS position
FROM telefonbuch AS t
LEFT OUTER JOIN telefonbuch AS kleinere
ON t.nachname > kleinere.nachname
GROUP BY t.nachname
ORDER BY t.nachname;

Mit einem Sub-SELECT lässt sich eine äquivalente Lösung konstruieren. Der Self-JOIN ist allerdings cooler. ;-)