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 אונליין