شرح صفوف ومحتوى الفقرة
عند بناء التقارير الإحصائية مثل إجمالي المبيعات لكل قسم أو عدد الطلبات لكل عميل، استخدم دالة groupBy لتقسيم الصفوف إلى مجموعات. ولأن SQL ينفذ شرط WHERE قبل التجميع، يجب استخدام دالة having لتصفية المجموعات بناءً على قيمتها الإحصائية المحسوبة.
- تجميع الصفوف (groupBy): دمج السجلات التي تشترك في نفس قيمة العمود داخل مجموعات تلخيصية.
- تصفية المجموعات (having): تطبيق شروط التصفية على النتائج المجمعة بعد حساب الدوال الإحصائية.
- الفرق الجوهري: تصفي where الصفوف الفردية قبل التجميع، بينما تصفي having المجاميع النهائية بعد التجميع.
PHP
$vipBuyers = DB::table('orders')
->select('user_id')
->selectRaw('COUNT(*) as orders_count')
->where('status', 'paid')
->groupBy('user_id')
->having('orders_count', '>=', 5)
->get();