التجميع - الجزء الثاني
جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 37 من 72.
تقوم الكلمة المفتاحية WHERE بتشغيل شرط على كل سجل بشكل منفصل. على سبيل المثال:
SELECT * FROM table1
WHERE col1 > col2سيتم تشغيل col1 > col2 على كل سجل والتحقق مما إذا كان قد تم استيفاؤه.
ولكن ماذا لو أردنا تصفية النتائج المجمعة؟ على سبيل المثال:
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryهذا لن يعمل لأن WHERE لا يمكنه التحقق من أي تجميعات (aggregations). لذلك، لدينا الكلمة المفتاحية HAVING. فهي تقوم بتصفية البيانات بناءً على شرط التجميع.
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40سيقوم هذا بتصفية جميع الفئات التي يكون متوسط السعر فيها أكبر من 40.
إذا أردنا دمج جملتي HAVING و WHERE سنكتب:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40سيقوم هذا أولاً بالمرور سجلاً بسجل وتصفية جميع السجلات التي يكون السعر فيها أكبر من 25، وفقط بعد ذلك سيقوم بتشغيل جملة GROUP BY وتصفية كل فئة يكون متوسط السعر فيها أكبر من 40.
التحدي
متوسطالجداول والأعمدة المتاحة:
<strong>earthquakes</strong>:<strong>location</strong>,<strong>amplitude</strong>,<strong>period</strong>
مقياس ريختر هو مقياس لوغاريتمي يستخدم لقياس شدة الزلازل.
نحتاج إلى إرجاع متوسط الشدة لكل موقع لجميع الزلازل الكبرى
يتم تعريف الزلزال الكبير على أنه:
- الـ
amplitudeأكبر من أو تساوي 1 - فترة الموجات
periodأكبر من أو تساوي 1 دقيقة
لهذا التحدي، سنستخدم صيغة مختلفة: M = (A/T)<sup>2</sup> / T، وهي تعادل M = ((A/T)*(A/T)) / T.
قم بإرجاع الـ location ومتوسط الشدة لكل موقع مع تضمين الزلازل الكبرى فقط (قم بتسمية العمود avg_magnitude). قم بتضمين المواقع التي يكون فيها avg_magnitude أكبر من 1 فقط في نتيجتك
قم بتقريب النتائج إلى 2 منزلة عشرية
ورقة مرجعية
تقوم الكلمة المفتاحية WHERE بتصفية السجلات الفردية، بينما تقوم HAVING بتصفية النتائج المجمعة بعد التجميع:
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40لدمج كلا الجملتين:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40تقوم WHERE بتصفية السجلات أولاً، ثم تقوم GROUP BY بتجميع البيانات المتبقية، وفي النهاية تقوم HAVING بتصفية النتائج المجمعة.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
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