Menu
CoddyTech

N המובילים בכל קבוצה

חלק מהיחידה מעבר ליסודות במסלול ה-SQL של Coddy. שיעור 23 מתוך 27.

"העובד בעל השכר הגבוה ביותר בכל מחלקה" הוא דוגמה קלאסית. המתכון הוא תמיד ROW_NUMBER() עם PARTITION BY, ואז מסננים לפי שורה 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

רוצה את 3 הראשונים במקום את הראשון? שנה את WHERE rn = 1 ל-WHERE rn <= 3. רוצה לאפשר תיקו במקומות הראשונים? החלף את ROW_NUMBER() ב-RANK().

challenge icon

אתגר

קל

טבלאות ועמודות זמינות:

  • employees: id, name, department, salary

החזר את העובד בעל השכר הגבוה ביותר בכל department. הצג את name, את department ואת salary, לפי הסדר של department. אם שני עובדים חולקים את השכר הגבוה ביותר במחלקה, החזר רק אחד מהם: את זה שהערך של id שלו נמוך יותר.

נסו בעצמכם

WITH ranked AS (
    -- ROW_NUMBER() OVER (PARTITION BY department ORDER BY ...)
)
SELECT name, department, salary FROM ranked WHERE rn = 1
ORDER BY department
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מעבר ליסודות

תרגלו בעצמכם: SQL אונליין