קריטריון PARTITION BY
שיעור 5 מתוך 13 בקורס SQL למתקדמים של Coddy.
אפשרות נוספת עבור אפשרויות OVER () היא PARTITION BY
היא מאפשרת לנו למספר את השורות של כל קבוצה בנפרד
לדוגמה:
| id | type |
| 132 | t1 |
| 52 | t2 |
| 92 | t1 |
| 154 | t3 |
| 198 | t1 |
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1פעולה זו תיצור עמודה שתמספר כל סוג בנפרד:
| id | type | row_num |
| 132 | t1 | 1 |
| 52 | t2 | 1 |
| 92 | t1 | 2 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
id 92 קיבל row_num 2 כי הוא השורה השנייה מסוג type t1
אפשר גם לשלב PARTITION BY עם ORDER BY:
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1פעולה זו תמספר את השורות בסדר עולה לפי ה-id של כל סוג:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
כעת ל-id 132 יש row_num 2 כי הוא גדול מ-92 וקטן מ-198.
אפשר אפילו לציין כמה עמודות בתוך PARTITION BY:
ROW_NUMBER() OVER (PARTITION BY type, hue)אתגר
קלמפעל בונה דלתות. עליו למספר את הדלתות עבור כל country ו-color ששנת publication_year שלהן לפני 2000. יש לקרוא לעמודה הזו row_num.
יש להתעלם מדלתות ללא מפרט. יש למיין את התוצאה בסדר עולה לפי id.
נסו בעצמכם
כל השיעורים ביחידה SQL למתקדמים
2פונקציות חלון חלק 1
פונקציית ROW_NUMBERקריטריון ORDER BYקריטריון PARTITION BYפונקציות LEAD ו-LAGאתגר חזרה #1אתגר חזרה #2תרגלו בעצמכם: קומפיילר Python אונליין