Menu
Coddy logo textTech

Top N w każdej grupie

Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 23 z 27.

„Najlepiej opłacany pracownik w każdym dziale” to klasyczny przykład. Schemat jest zawsze taki sam: ROW_NUMBER() z PARTITION BY, a następnie filtrowanie do wiersza 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

Chcesz mieć 3 najlepsze wyniki zamiast 1? Zmień WHERE rn = 1 na WHERE rn <= 3. Chcesz uwzględniać remisy na szczycie? Zamień ROW_NUMBER() na RANK().

challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • employees: id, name, department, salary

Zwróć najlepiej opłacanego pracownika w każdym dziale department. Wyświetl name, department i salary, posortowane według department. Jeśli dwóch pracowników ma taką samą najwyższą pensję w danym dziale, zwróć tylko jednego: tego z niższym id.

Spróbuj swoich sił

WITH ranked AS (
    -- ROW_NUMBER() OVER (PARTITION BY department ORDER BY ...)
)
SELECT name, department, salary FROM ranked WHERE rn = 1
ORDER BY department
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Poza podstawami

Poćwicz samodzielnie: Edytor online SQL