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().
אתגר
קלטבלאות ועמודות זמינות:
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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מעבר ליסודות
6מתכונים לניתוח נתונים
N המובילים בכל קבוצהאחוז מתוך הסך הכולסכום מצטברהשארת שורה אחת לכל מפתחסיכום – הלקוחות המוביליםתרגלו בעצמכם: SQL אונליין