Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دوال التجميع المدمجة - الجزء الثاني

جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 35 من 72.

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

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

SELECT value + MIN(value)
FROM table1

السبب هو أن الدوال التجميعية (aggregate functions) تعمل على العمود بأكمله، بينما يحاول مرجع 'value' العمل صفاً بصف. لحل هذه المشكلة، نستخدم استعلاماً متداخلاً:

SELECT value + (SELECT MIN(value) FROM table1)
FROM table1

يعمل هذا لأن الاستعلام المتداخل (SELECT MIN(value) FROM table1) يتم تنفيذه أولاً ويعيد قيمة واحدة، والتي يمكن استخدامها بعد ذلك في الاستعلام الرئيسي لكل صف.

حالات الاستخدام الشائعة للتجميعات المتداخلة:
1. مقارنة كل قيمة بالمتوسط

2. حساب النسبة المئوية من الإجمالي

3. إيجاد الفروق عن القيم القصوى أو الدنيا

challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • <strong>items</strong>: <strong>id</strong>, <strong>price</strong>

احسب مقدار زيادة سعر كل عنصر عن متوسط سعر جميع العناصر. اعرض معرف العنصر، وسعره، والفرق عن المتوسط. قم بتسمية عمود الفرق باسم diff_from_avg.

رتب النتائج حسب الفرق بترتيب تنازلي.

ورقة مرجعية

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

هذا لن يعمل:

SELECT value + MIN(value)
FROM table1

استخدم استعلاماً متداخلًا بدلاً من ذلك:

SELECT value + (SELECT MIN(value) FROM table1)
FROM table1

يتم تنفيذ الاستعلام المتداخل أولاً ويعيد قيمة واحدة يمكن استخدامها في الاستعلام الرئيسي لكل صف.

حالات الاستخدام الشائعة:

  • مقارنة كل قيمة بالمتوسط
  • حساب النسبة المئوية من الإجمالي
  • إيجاد الفروق عن القيم القصوى أو الدنيا

جرّب بنفسك

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات