Menu
Coddy logo textTech

Top-N pro Gruppe

Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 23 von 27.

„Höchstbezahlter Mitarbeiter pro Abteilung“ ist das klassische Beispiel. Das Rezept lautet immer ROW_NUMBER() mit einem PARTITION BY und anschließendem Filtern auf Zeile 1.

WITH ranked AS (
    SELECT name, department, salary,
           ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
    FROM employees
)
SELECT name, department, salary FROM ranked WHERE rn = 1

Möchtest du die Top 3 statt der Top 1? Ändere WHERE rn = 1 zu WHERE rn <= 3. Möchtest du Gleichstände an der Spitze zulassen? Ersetze ROW_NUMBER() durch RANK().

challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • employees: id, name, department, salary

Gib den bestbezahlten Mitarbeiter in jeder department zurück. Gib name, department und salary aus, sortiert nach department. Wenn zwei Mitarbeiter innerhalb einer Abteilung beim höchsten Gehalt gleichauf liegen, gib nur einen zurück: denjenigen mit der niedrigeren id.

Probier es selbst

WITH ranked AS (
    -- ROW_NUMBER() OVER (PARTITION BY department ORDER BY ...)
)
SELECT name, department, salary FROM ranked WHERE rn = 1
ORDER BY department
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Über die Grundlagen hinaus

Übe selbstständig: SQL-Playground