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

هل متوسط متوسطات الأقسام يساوي متوسط رواتب الموظفين؟

لا يساوي متوسط متوسطات الأقسام متوسط رواتب جميع الموظفين بالضرورة. عند حساب متوسط الأقسام، يحصل كل قسم على الوزن نفسه مهما كان عدد موظفيه. أما المتوسط العام فيعطي كل راتب معروف الوزن نفسه، ولذلك تؤثر الأقسام الأكبر بعدد أكبر من القيم في النتيجة النهائية.

مثال

SELECT SUM(salary_total) / NULLIF(SUM(salary_count), 0)
       AS overall_average
FROM (
  SELECT department,
         SUM(salary) AS salary_total,
         COUNT(salary) AS salary_count
  FROM employees
  GROUP BY department
) AS department_totals;

يجمع هذا الاستعلام مجاميع الرواتب ويقسمها على عدد الرواتب المعروفة. بذلك يحافظ على وزن كل قسم بحسب القيم التي شاركت فعليا في الحساب. استخدام عدد الموظفين كله قد يكون غير مناسب إذا كانت بعض الرواتب مفقودة.

يمكن حساب المتوسط العام مباشرة باستخدام AVG(salary) إذا كانت البيانات الأصلية متاحة. تصبح الصيغة المجمعة مفيدة عندما تعمل على ملخصات الأقسام، بشرط الاحتفاظ بالمجموع والعدد، لا بالمتوسط وحده فقط.

باختصار: لاسترجاع المتوسط العام من المجموعات، اجمع المجاميع واقسم على مجموع أعداد القيم المشاركة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

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