انتقل إلى محتوى الدرس

Combining WHERE and HAVING Clauses الجمع بين WHERE و HAVING

اجمع بين جملتي WHERE و HAVING في استعلام واحد لتصفية الصفوف الخام أولاً ثم المجموعات ثانياً.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تتجلى القوة الحقيقية لاستعلامات التحليل عند الجمع بين WHERE و HAVING في استعلام واحد ليؤدي كل منهما دوره الدقيق:

  • الخطوة الأولى WHERE: تصفّي الصفوف الخام من الجدول قبل التجميع (مثل اختيار الطلبات المدفوعة فقط خلال عام 2026).
  • الخطوة الثانية GROUP BY: تجمّع الطلبات المدفوعة المتبقية حسب رقم العميل customer_id وتحسب مجموع مشتريات كل عميل.
  • الخطوة الثالثة HAVING: تصفّي مجموعات العملاء للإبقاء فقط على كبار العملاء الذين بلغ مجموع مشترياتهم 1000.00 فأكثر.

لاحظ أن استبعاد الطلبات الملغاة مبكراً في WHERE يؤثر مباشرةً في دقة المجاميع التي تفحصها HAVING لاحقاً.

SQL
-- VIP customers in 2026: filter rows in WHERE, groups in HAVING
SELECT customer_id,
       COUNT(*)       AS paid_orders_2026,
       SUM(total_usd) AS total_spent_2026
FROM orders
WHERE order_status = 'paid'
  AND created_at >= '2026-01-01'
GROUP BY customer_id
HAVING SUM(total_usd) >= 1000.00
ORDER BY total_spent_2026 DESC;