Menu
Coddy logo textTech

פונקציות RANK ו-DENSE_RANK

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

ROW_NUMBER() היא סוג אחד של פונקציית דירוג, ויש עוד שתיים: RANK() ו-DENSE_RANK().

הפונקציה RANK() ממספרת שורות כמו ROW_NUMBER(), אך היא מעניקה מספרים זהים לשורות זהות ומדלגת על מספרים. DENSE_RANK() דומה ל־RANK(), אך היא אינה מדלגת על מספרים.

לדוגמה:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

הפעולה תחזיר:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

הסבר:

  • ROW_NUMBER(): תמיד ייחודי: 1, 2, 3, 4, 5, 6
  • RANK():
    • רמה 5 (2 שורות): שתיהן מקבלות דירוג 1
    • רמה 6 (2 שורות): שתיהן מקבלות דירוג 3 (מדלג על 2)
    • רמה 7 (2 שורות): שתיהן מקבלות דירוג 5 (מדלג על 4)
  • DENSE_RANK():
    • רמה 5 (2 שורות): שתיהן מקבלות דירוג 1
    • רמה 6 (2 שורות): שתיהן מקבלות דירוג 2 (ללא דילוג)
    • רמה 7 (2 שורות): שתיהן מקבלות דירוג 3 (ללא דילוג)
challenge icon

אתגר

קל

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

  • medals: region, medal_color, medal_count

צרו שאילתה שמציגה את האזור, את מספר המדליות הכולל (סכום כל המדליות ללא קשר לצבע) ואת שני סוגי הדירוגים:

  1. דירוג regular_rank (עם פערים) לפי סכום המדליות
  2. דירוג dense_rank (ללא פערים) לפי סכום המדליות

מיינו את התוצאה לפי:

order by total_medals desc, region asc

נסו בעצמכם

quiz iconבחנו את עצמכם

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

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

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