شرح صفوف ومحتوى الفقرة
تتجلى القوة الحقيقية لاستعلامات التحليل عند الجمع بين 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;