لماذا يهم هذا الدرس؟

فهم HAVING وربطه بمثال علائقي عملي واضح. تختزل Aggregate Functions صفوفًا كثيرة إلى Measures. تحدد GROUP BY كل Result Group بينما ترشح HAVING المجموعات بعد Aggregation.

كيف تفكر فيه؟

  • في درس HAVING، النتيجة التي يجب أن تتحقق: نفّذ الاستعلام على بيانات تجريبية واقرأ النتيجة قبل الانتقال إلى الحالة التالية.
  • في سياق HAVING، الخطر الذي يجب أن يبقى تحت السيطرة: اختيار Columns غير موجودة في GROUP BY مع Aggregates أواستخدام WHERE عندما يعتمد الشرط على Aggregate يؤدي إلى Query خاطئة أو مضللة.
  • تطبيق HAVING: احسب Order Count وRevenue لكل Customer ثم احتفظ فقط بمن تجاوز Order Count حدًا تختاره.

تطبيق عملي

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

example.sqlsql
SELECT customer_id, COUNT(*) AS orders
FROM orders
GROUP BY customer_id
HAVING COUNT(*) >= 5;

جرّب بنفسك

Practice

تمرين HAVING

احسب Order Count وRevenue لكل Customer ثم احتفظ فقط بمن تجاوز Order Count حدًا تختاره.

  • سجل النتيجة المتوقعة قبل التنفيذ
  • اختبر حالة صحيحة وحالة فشل مرتبطة بالدرس
  • اشرح في سطرين أين يوجد الحد المسؤول عن القرار

الخلاصة