الدالة RANK() تعطي كل صف ترتيبًا حسب قيمة عمود معين:
SELECT name, score,
RANK() OVER (ORDER BY score DESC) AS position
FROM players;
ماذا يحدث مع القيم المتساوية؟
إذا تساوى لاعبان، يأخذان الترتيب نفسه، ويُترك فراغ بعدهما:
score 90 → 1
score 85 → 2
score 85 → 2
score 80 → 4
الدوال الثلاث
RANK(): 1، 2، 2، 4.DENSE_RANK(): 1، 2، 2، 3 (دون فراغ).ROW_NUMBER(): 1، 2، 3، 4 (رقم مختلف دائمًا).
ومع PARTITION BY يُحسب الترتيب داخل كل مجموعة على حدة.