GROUP BY لعمود واحد أو عدة أعمدة
جمّع الصفوف حسب عمود أو أكثر لإنتاج المجاميع الفرعية وتقسيمات الفئات، واقرأ خطط استعلامات GROUP BY.
GROUP BY لعمود واحد أو عدة أعمدة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
ما الذي يفعله GROUP BY
يقسّم GROUP BY الصفوف إلى مجموعات حسب قيمة عمود واحد أو أكثر، ثم يطبّق دوال التجميع على كل مجموعة.
التجميع حسب عمود واحد
إجمالي الطلبات لكل مستخدم:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;التجميع حسب عدة أعمدة
مجموعات فرعية حسب الفئة والبلد:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;يجب تجميع كل عمود محدد في SELECT أو تطبيق دالة تجميعية عليه
قاعدة SQL القياسية:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY حسب تعبير
يمكنكم التجميع حسب ناتج تعبير، مثل تجميع التواريخ حسب الشهر:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY حسب الموضع أو الاسم المستعار
يمكنكم التجميع حسب موضع في قائمة SELECT أو حسب اسم مستعار في PostgreSQL:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionمجموعات التجميع وROLLUP وCUBE
احسبوا مجموعات متعددة في استعلام واحد — وهذا مثالي للمجاميع الفرعية:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalالمجموعات الفارغة غير موجودة
يعرض GROUP BY المجموعات التي تحتوي على صف واحد على الأقل فقط. إذا أردتم عرض كل فئة، بما في ذلك الفئات التي لا تحتوي على طلبات، فاستخدموا LEFT JOIN انطلاقًا من القائمة الرئيسية، ثم أجروا التجميع.
GROUP BY والفهارس
قد يستخدم المُخطِّط تجميعًا باستخدام التجزئة، أي إنشاء جدول تجزئة للمجموعات، أو استراتيجية الفرز ثم التجميع. ويمكن للفهارس على عمود التجميع أن تجعل الطريقة الثانية سريعة.
دوال النوافذ مقابل GROUP BY
يختزل GROUP BY الصفوف. أما دوال النوافذ فتضيف أعمدة تجميعية مع الإبقاء على كل صف. اختاروا الأداة المناسبة — ويُشرح ذلك في درس Window Functions Deep Dive.
الأسماء المستعارة في HAVING مقابل WHERE
الترتيب المنطقي: FROM → WHERE → GROUP BY → HAVING → SELECT. لا يستطيع WHERE الوصول إلى الدوال التجميعية، بينما يستطيع HAVING ذلك.
مراجعة
يُعد GROUP BY الأداة الأساسية لإعداد التقارير.
- يجب تجميع كل عمود محدد في SELECT أو تطبيق دالة تجميعية عليه
- يمكنكم التجميع حسب الأعمدة أو التعبيرات أو الأسماء المستعارة
- استخدموا ROLLUP/CUBE/GROUPING SETS لإنشاء الجداول التقاطعية
تحقق سريع
في استعلام يتضمن GROUP BY country، هل يمكن أن تتضمن قائمة SELECT العمود city إذا لم يكن مطبقًا عليه تجميع ولم يرد في GROUP BY؟
تعلم SQL مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 46
- الدروس
- 183
الأسئلة الشائعة
هل درس «GROUP BY لعمود واحد أو عدة أعمدة» مجاني؟
نعم — نص درس «GROUP BY لعمود واحد أو عدة أعمدة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «GROUP BY لعمود واحد أو عدة أعمدة»؟
جمّع الصفوف حسب عمود أو أكثر لإنتاج المجاميع الفرعية وتقسيمات الفئات، واقرأ خطط استعلامات GROUP BY. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «GROUP BY لعمود واحد أو عدة أعمدة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- COUNT وSUM وAVG وMIN وMAX
- GROUP BY لعمود واحد أو عدة أعمدة
- HAVING مقابل WHERE
- أخطاء شائعة: قيم NULL في التجميعات