Menu
CoddyTech
flag Ar iconالعربيةdown icon

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

جزء من قسم الأساسيات في رحلة 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 لا يمكنه التحقق من أي تجميعات. ولهذا، لدينا الكلمة المفتاحية 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.

challenge icon

التحدي

متوسط

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

  • earthquakes: location, amplitude, period

مقياس ريختر هو مقياس لوغاريتمي يُستخدم لقياس قوة الزلازل.

نحتاج إلى إرجاع متوسط القوة لكل موقع لجميع الزلازل الكبيرة.

يُعرَّف الزلزال الكبير بأنه:

  • السعة أكبر من أو تساوي 1
  • فترة الموجات أكبر من أو تساوي دقيقة واحدة

في هذا التحدي، سنستخدم صيغة مختلفة: M = (A/T)^2 / T، وهي مكافئة للصيغة M = ((A/T)*(A/T)) / T. حيث إن M هي القوة، وA هو عمود amplitude، وT هو عمود period.

أرجِع الموقع ومتوسط القوة لكل موقع، مع تضمين الزلازل الكبيرة فقط (وسمِّ العمود avg_magnitude). ضمّن في نتيجتك المواقع التي تكون فيها قيمة avg_magnitude أكبر من 1 فقط.

قرِّب النتائج إلى منزلتين عشريتين.

جرّب بنفسك

quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ SQL