دوال التجميع المدمجة - الجزء الثاني
جزء من قسم الأساسيات في رحلة 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. إيجاد الفروق عن القيم القصوى أو الدنيا
التحدي
سهلالجداول والأعمدة المتاحة:
<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يتم تنفيذ الاستعلام المتداخل أولاً ويعيد قيمة واحدة يمكن استخدامها في الاستعلام الرئيسي لكل صف.
حالات الاستخدام الشائعة:
- مقارنة كل قيمة بالمتوسط
- حساب النسبة المئوية من الإجمالي
- إيجاد الفروق عن القيم القصوى أو الدنيا
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGE