كيف أحسب متوسط السعر المرجح بالكمية في SQL؟

متوسطقراءة دقيقةآخر تحديث 2 أكتوبر 2026

SQL قواعد البيانات

الإجابة

يعطي AVG(unit_price) كل صف الوزن نفسه، حتى لو كانت الكميات مختلفة بين الصفوف. إذا أردت متوسط سعر الوحدة المباعة فعليا، فيجب ترجيح كل سعر بعدد الوحدات التي بيعت به. يحسب ذلك بجمع حاصل ضرب السعر في الكمية، ثم قسمة الناتج على مجموع الكميات.

مثال

SELECT SUM(unit_price * quantity)
       / NULLIF(SUM(quantity), 0) AS weighted_price
FROM orders;

إذا بيعت وحدة بسعر عشرة وثلاث وحدات بسعر عشرين، فإن إجمالي القيمة سبعون وإجمالي الوحدات أربع، فيكون المتوسط سبعة عشر ونصفا. أما متوسط السعرين مباشرة فيساوي خمسة عشر، لأنه يعطي صف الوحدة الواحدة وزن صف الوحدات الثلاث.

يفترض هذا الحساب أن الأسعار والكميات معروفة، وأن تعريف الكمية مناسب للتقرير. تستخدم NULLIF لتجنب القسمة على صفر عندما يساوي مجموع الكميات صفرا. ويمكن تطبيق الصيغة نفسها لكل منتج باستخدام التجميع حسب معرف المنتج.

باختصار: المتوسط المرجح بالكمية يساوي مجموع قيمة الوحدات مقسوما على مجموع عددها.

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

اختبر فهمك

ما قيمة weighted_price التي يعيدها الاستعلام، بصرف النظر عن الأصفار العشرية النهائية؟

CREATE TABLE orders (
  id INT PRIMARY KEY,
  unit_price DECIMAL(10,2) NOT NULL,
  quantity INT NOT NULL
);
INSERT INTO orders VALUES (1, 10, 1), (2, 20, 3);
SELECT SUM(unit_price * quantity)
       / NULLIF(SUM(quantity), 0) AS weighted_price
FROM orders;