شبكة تعلم مع ناو

ما فائدة PARTITION BY مع RANK() وROW_NUMBER() في SQL؟

PARTITION BY يقسم النتائج إلى مجموعات قبل تطبيق دالة مثل RANK() أو ROW_NUMBER(). فيبدأ الحساب من جديد داخل كل مجموعة.

SELECT name, department, salary,
       ROW_NUMBER() OVER (
           PARTITION BY department
           ORDER BY salary DESC
       ) AS rank_in_dept
FROM employees;

كل قسم يحصل على ترتيبه الخاص: 1، 2، 3… ثم يبدأ القسم التالي من 1 مرة أخرى.

الفرق مع GROUP BY

  • GROUP BY: يدمج كل مجموعة في صف واحد.
  • PARTITION BY: يُبقي كل الصفوف، ويضيف لكل صف حسابًا ضمن مجموعته.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.