SQL GROUP BY وجملة تحتوي على أمثلة

ما هي مجموعة SQL حسب البند؟

جملة GROUP BY هي أمر SQL يُستخدم لـ صفوف المجموعة التي لها نفس القيم. يتم استخدام جملة GROUP BY في عبارة SELECT. يتم استخدامه بشكل اختياري مع الوظائف التجميعية لإنتاج تقارير موجزة من قاعدة البيانات.

هذا ما يفعله، تلخيص البيانات من قاعدة البيانات.

تسمى الاستعلامات التي تحتوي على جملة GROUP BY استعلامات مجمعة وتقوم بإرجاع صف واحد فقط لكل عنصر مجمع.

مجموعة SQL حسب بناء الجملة

الآن بعد أن عرفنا ما هي جملة SQL GROUP BY، دعونا نلقي نظرة على بناء جملة مجموعة أساسية حسب الاستعلام.

SELECT statements... GROUP BY column_name1[,column_name2,...] [HAVING condition];

هنا

  • "عبارات SELECT..." هي استعلام أمر SQL SELECT القياسي.
  • "GROUP BY اسم_العمود 1"هي العبارة التي تؤدي وظيفة المجموعة"ping بناءً على اسم العمود 1.
  • "[,column_name2,…]" اختياري؛ يمثل أسماء أعمدة أخرى عندما تكون المجموعةping يتم ذلك على أكثر من عمود واحد.
  • "[وجود شرط]" اختياري؛ يتم استخدامه لتقييد الصفوف المتأثرة بجملة GROUP BY. إنه مشابه ل حيث الشرطية.

الحبوping باستخدام عمود فردي

للمساعدة في فهم تأثير جملة SQL Group By، فلننفذ استعلامًا بسيطًا يقوم بإرجاع كافة إدخالات الجنس من جدول الأعضاء.

SELECT `gender` FROM `members` ;
gender
Female
Female
Male
Female
Male
Male
Male
Male
Male

لنفترض أننا نريد الحصول على القيم الفريدة للأجناس. يمكننا استخدام الاستعلام التالي -

SELECT `gender` FROM `members` GROUP BY `gender`;

تنفيذ البرنامج النصي أعلاه في MySQL طاولة العمل مقابل Myflixdb يعطينا النتائج التالية.

gender
Female
Male

لاحظ أنه تم إرجاع نتيجتين فقط. وذلك لأن لدينا نوعين فقط من الجنسين ذكر وأنثى. قامت جملة GROUP BY في SQL بتجميع جميع الأعضاء "الذكور" معًا وإرجاع صف واحد فقط لها. وفعلت الشيء نفسه مع الأعضاء "الإناث".

الحبوping استخدام أعمدة متعددة

لنفترض أننا نريد الحصول على قائمة بفئة الفيلم والسنوات المقابلة التي تم إصدارها فيها.

دعونا نلاحظ إخراج هذا الاستعلام البسيط

SELECT `category_id`,`year_released` FROM `movies` ;
category_id year_released
1 2011
2 2008
NULL 2008
NULL 2010
8 2007
6 2007
6 2007
8 2005
NULL 2012
7 1920
8 NULL
8 1920

النتيجة المذكورة أعلاه لديها العديد من التكرارات.

لننفذ نفس الاستعلام باستخدام group by في SQL -

SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;

تنفيذ البرنامج النصي أعلاه في MySQL يعطينا العمل مع myflixdb النتائج التالية الموضحة أدناه.

category_id year_released
NULL 2008
NULL 2010
NULL 2012
1 2011
2 2008
6 2007
7 1920
8 1920
8 2005
8 2007

تعمل عبارة GROUP BY على كل من معرف الفئة وسنة الإصدار لتحديد فريد من نوعه الصفوف في مثالنا أعلاه.

إذا كان معرف الفئة هو نفسه ولكن سنة الإصدار مختلفة، فسيتم التعامل مع الصف على أنه صف فريد. وإذا كان معرف الفئة وسنة الإصدار هو نفسه لأكثر من صف واحد، فسيتم اعتباره مكررًا وصفًا واحدًا فقط معروض.

الحبوping و وظائف مجمعة

لنفترض أننا نريد معرفة العدد الإجمالي للذكور والإناث في قاعدة البيانات الخاصة بنا. يمكننا استخدام البرنامج النصي التالي الموضح أدناه للقيام بذلك.

SELECT `gender`,COUNT(`membership_number`)  FROM `members` GROUP BY `gender`;

تنفيذ البرنامج النصي أعلاه في MySQL يعطينا workbench مقابل myflixdb النتائج التالية.

gender COUNT('membership_number')
Female 3
Male 5

يتم تجميع النتائج الموضحة أدناه حسب كل قيمة جنس فريدة منشورة ويتم حساب عدد الصفوف المجمعة باستخدام الدالة التجميعية COUNT.

تقييد نتائج الاستعلام باستخدام وجود بند

ليس بالضرورة أن نرغب دائمًا في أداء عروض جماعيةpingيتم تطبيق الاستعلام على جميع البيانات في جدول معين. في بعض الأحيان، قد نرغب في حصر نتائجنا بمعايير محددة. في مثل هذه الحالات، يمكننا استخدام عبارة HAVING.

لنفترض أننا نريد معرفة جميع سنوات الإصدار لفئة الفيلم رقم 8. سنستخدم البرنامج النصي التالي لتحقيق نتائجنا.

SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;

تنفيذ البرنامج النصي أعلاه في MySQL يعطينا العمل مع Myflixdb النتائج التالية الموضحة أدناه.

movie_id title director year_released category_id
9 Honey mooners John Schultz 2005 8
5 Daddy's Little Girls NULL 2007 8

لاحظ أن الأفلام ذات معرف الفئة 8 فقط هي التي تأثرت بشرط GROUP BY الخاص بنا.

ملخص

  • يتم استخدام GROUP BY Clause SQL لتجميع الصفوف ذات القيم نفسها.
  • يتم استخدام جملة GROUP BY مع بيان SQL SELECT.
  • لا يمكن استخدام عبارة SELECT المستخدمة في جملة GROUP BY إلا لتحتوي على أسماء الأعمدة والوظائف المجمعة والثوابت والتعبيرات.
  • يتم استخدام جملة وجود SQL لتقييد النتائج التي يتم إرجاعها بواسطة جملة GROUP BY.
  • تُستخدم عبارة MYSQL GROUP BY لجمع البيانات من سجلات متعددة وإرجاع مجموعة السجلات بواسطة عمود واحد أو أكثر.

تلخيص هذه التدوينة بـ: