27- كورس شرح قواعد البيانات MYSQL – MySQL GROUP BY

شرح مفصل لـ MySQL GROUP BY

تُعد MySQL واحدة من أكثر نظم إدارة قواعد البيانات شهرة واستخدامًا في العالم، وتوفر العديد من الأدوات والوظائف لإدارة البيانات بفعالية. إحدى هذه الوظائف هي `GROUP BY`، التي تُستخدم لتجميع البيانات وفقًا لقيم معينة في عمود أو أعمدة محددة. يتيح لك هذا التجميع إجراء عمليات حسابية مثل المجموع، المتوسط، العد، وغيرها على مجموعات البيانات.

مفهوم GROUP BY

تُستخدم عبارة `GROUP BY` في SQL لتجميع الصفوف التي تحتوي على قيم متشابهة في أعمدة محددة. عند استخدام `GROUP BY` مع دوال التجميع مثل COUNT، SUM، AVG، MAX، و MIN، يمكنك الحصول على ملخصات مفيدة للبيانات.

بناء الجملة

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...;

– **SELECT**: تُستخدم لتحديد الأعمدة التي [شركة برمجة مصرية] تريد استرجاعها.
– **aggregate_function**: دالة تجميع مثل SUM، COUNT، AVG، إلخ.
– **FROM**: تحدد الجدول الذي يتم الاستعلام منه.
– **WHERE**: تضيف شروطًا لتصفية الصفوف قبل التجميع.
– **GROUP BY**: تحدد الأعمدة التي سيتم استخدامها لتجميع البيانات.

أمثلة على استخدام GROUP BY

المثال الأول: COUNT

لنفترض أن لدينا جدولًا باسم `employees` يحتوي على الأعمدة التالية: `id`, `name`, `department`, `salary`. ونريد معرفة عدد الموظفين في كل قسم.

SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department;

هذا الاستعلام يجمع الموظفين حسب القسم ويحسب عدد الموظفين في كل قسم.

المثال الثاني: SUM

نريد حساب إجمالي الرواتب التي تُدفع لكل قسم.

SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department;

سيعطينا هذا الاستعلام مجموع الرواتب لكل قسم.

المثال الثالث: AVG

لحساب متوسط الرواتب لكل قسم، يمكنك استخدام الدالة AVG.

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

هذا الاستعلام يوضح متوسط الراتب لكل قسم.

المثال الرابع: مع WHERE

يمكن دمج `GROUP BY` مع شرط `WHERE` لتصفية البيانات قبل التجميع. لنفترض أننا نريد حساب متوسط الرواتب للموظفين في قسم “التسويق” فقط.

SELECT department, AVG(salary) AS average_salary
FROM employees
WHERE department = 'Marketing'
GROUP BY department;

استخدام GROUP BY مع HAVING

يمكنك استخدام عبارة `HAVING` لتصفية النتائج بعد تطبيق التجميع. على سبيل [شركة برمجة مصرية] المثال، إذا كنا نريد فقط الأقسام التي يتجاوز مجموع رواتبها 100,000.

SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department
HAVING total_salary > 100000;

الخاتمة

تعد `GROUP BY` أداة قوية في MySQL تمكنك من تحليل البيانات بطرق متعددة وفعالة. من خلال فهم كيفية استخدام هذه الوظيفة مع دوال التجميع، يمكنك استخراج معلومات قيمة من قواعد البيانات بسهولة. سواء كنت ترغب في حساب المتوسطات، المجاميع، أو العد، فإن `GROUP BY` توفر لك طريقة بسيطة لتحقيق ذلك.