تحسين الاستعلامات باستخدام التجميعات (Aggregations) والدوال التحليلية (Analytical Functions) في SQL

Amine
30/09/2024

ما هي التجميعات (Aggregations) في SQL؟

التجميعات في SQL هي دوال تُستخدم لإجراء عمليات حسابية على مجموعة من الصفوف وإرجاع قيمة واحدة كنتيجة. تُستخدم التجميعات بشكل واسع في تحليلات البيانات لإنشاء تقارير إحصائية، تلخيص البيانات، واستخراج القيم الإجمالية. تشمل الدوال التجميعية الشائعة: SUM، COUNT، AVG، MIN، وMAX.

استخدام الدوال التجميعية في SQL

الدوال التجميعية تُستخدم مع عبارة GROUP BY لتجميع البيانات بناءً على عمود أو أكثر. تعمل GROUP BY على تقسيم الصفوف إلى مجموعات، ثم تطبيق الدوال التجميعية على هذه المجموعات لإرجاع النتائج الملخصة.

مثال على استخدام GROUP BY ودالة SUM

SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id;

في هذا المثال، يتم استخدام دالة SUM لحساب مجموع الرواتب لكل قسم باستخدام عمود department_id. يتم تقسيم البيانات أولاً باستخدام GROUP BY، ثم تطبيق SUM على كل مجموعة.

مثال على استخدام دالة COUNT

SELECT department_id, COUNT(employee_id) AS num_employees
FROM employees
GROUP BY department_id;

في هذا المثال، يتم استخدام دالة COUNT لحساب عدد الموظفين في كل قسم. يتم تقسيم البيانات أولاً باستخدام GROUP BY، ثم تطبيق COUNT على كل مجموعة.

الدوال التحليلية (Analytical Functions) في SQL

الدوال التحليلية (Analytical Functions) تُستخدم لتنفيذ العمليات الحسابية على مجموعة من الصفوف، لكنها تختلف عن الدوال التجميعية في أنها تحتفظ بكل صفوف الجدول الأصلي. يمكن استخدام الدوال التحليلية مع العبارات OVER وPARTITION BY لتقسيم البيانات وتحليلها بطرق متقدمة.

دالة RANK

تُستخدم دالة RANK لتحديد ترتيب الصفوف بناءً على قيمة معينة. تقوم هذه الدالة بإرجاع ترتيب كل صف ضمن مجموعة معينة من الصفوف.

مثال على استخدام دالة RANK

SELECT employee_name, salary,
RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;

في هذا المثال، يتم استخدام دالة RANK لتحديد ترتيب الرواتب لكل موظف. يتم ترتيب الصفوف بناءً على قيمة العمود salary بشكل تنازلي، ثم إرجاع رتبة كل موظف.

دالة ROW_NUMBER

تُستخدم دالة ROW_NUMBER لتحديد رقم الصف ضمن مجموعة معينة من الصفوف. تُعد هذه الدالة مفيدة عند الحاجة إلى ترقيم الصفوف في استعلام معين.

مثال على استخدام دالة ROW_NUMBER

SELECT employee_name, salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS row_num
FROM employees;

في هذا المثال، يتم استخدام دالة ROW_NUMBER لتحديد رقم الصف لكل موظف ضمن كل قسم. يتم تقسيم الصفوف باستخدام PARTITION BY بناءً على عمود department_id، ثم ترقيم الصفوف بناءً على الرواتب بشكل تنازلي داخل كل قسم.

دالة LAG

تُستخدم دالة LAG لاسترجاع قيمة العمود من الصف السابق ضمن نفس المجموعة. تُعد هذه الدالة مفيدة لتحليل البيانات عبر الصفوف المتتالية.

مثال على استخدام دالة LAG

SELECT employee_name, salary,
LAG(salary, 1, 0) OVER (ORDER BY salary DESC) AS prev_salary
FROM employees;

في هذا المثال، يتم استخدام دالة LAG لاسترجاع قيمة راتب الموظف السابق لكل موظف. يتم ترتيب الصفوف بناءً على العمود salary، ويتم استرجاع الراتب السابق لكل موظف.

تحليل البيانات باستخدام التجميعات والدوال التحليلية

يمكن استخدام التجميعات والدوال التحليلية لتحليل البيانات بطرق معقدة وإنشاء تقارير متقدمة. على سبيل المثال، يمكن استخدام الدوال التحليلية لعرض التغيرات في القيم، تحديد الاتجاهات (Trends)، أو مقارنة القيم الحالية بالقيم السابقة.

مثال على استخدام التجميعات والدوال التحليلية معًا

SELECT department_id, SUM(salary) AS total_salary,
RANK() OVER (ORDER BY SUM(salary) DESC) AS department_rank
FROM employees
GROUP BY department_id;

في هذا المثال، يتم استخدام دالة SUM لحساب مجموع الرواتب لكل قسم، ثم يتم استخدام دالة RANK لتحديد ترتيب الأقسام بناءً على مجموع الرواتب.

نصائح لاستخدام التجميعات والدوال التحليلية بكفاءة

لتحقيق أقصى استفادة من التجميعات والدوال التحليلية، يُنصح بما يلي:

  • استخدام الفهارس على الأعمدة المستخدمة في GROUP BY و ORDER BY لتحسين الأداء.
  • تحليل خطة التنفيذ (Execution Plan) للتأكد من أن الاستعلام يتم تنفيذه بكفاءة.
  • تقليل استخدام الدوال التحليلية في الاستعلامات المعقدة لتجنب زيادة زمن التنفيذ.

خاتمة

في هذا الدرس، تعرفنا على كيفية استخدام التجميعات والدوال التحليلية لتحسين استعلامات SQL. تعلمنا كيفية استخدام GROUP BY، SUM، COUNT، والدوال التحليلية مثل RANK و ROW_NUMBER. سنكمل في الدروس القادمة استكشاف المزيد من الأدوات والتقنيات لتحليل البيانات بشكل متقدم باستخدام SQL.

إذا وجدت هذا الدرس مفيدًا، لا تتردد في ترك تعليق أو مشاركة الدرس مع أصدقائك على وسائل التواصل الاجتماعي لمساعدتهم أيضًا على تعلم التحليل المتقدم للبيانات باستخدام SQL!

التعليقات

اترك تعليقاً