القائمة الرئيسية

الصفحات

الدرس 14 SQL

الدالة AVG()

الدالة AVG() تستخدم للحصول على متوسط ( Average ) قيم الحقول الغير فارغة الموجودة في العامود.
طبعاً يمكن استخدام هذه الدالة مع القيم الرقمية فقط.


الشكل العام لإستخدامها

    SELECT AVG(column_name)
    FROM table_name
    WHERE condition;
  

إذاً نستدعي الدالة AVG() مباشرةً بعد الكلمة SELECT.
إسم العامود الذي نريد الحصول على متوسط القيم الرقمية الموجودة فيه نكتبه بين أقواس الدالة مكان الكلمة column_name.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

      -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
      DROP DATABASE IF EXISTS harmash;

      -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
      CREATE DATABASE harmash;

      -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
      USE harmash;

      -- يتألف من 6 أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
      -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
      CREATE TABLE employees (
      id         INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      first_name VARCHAR(50),
      last_name  VARCHAR(20),
      is_married BOOLEAN,
      salary     DECIMAL(7,2),
      birthday   Date
      );

      -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
      -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
      -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
      -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
      INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23");
      INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08");
      INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12");
      INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04");
      INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27");
      INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12");
      INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10");
      INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14");
      INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12");
      INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");
    

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.


البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول employees.

id first_name last_name is_married salary birthday
1 Ahmad Alhazem 0 800.00 1990-10-23
2 Rami Algharib 0 750.00 1992-05-08
3 Said Alnaja 1 900.00 1988-07-12
4 Noura Jamali 0 845.00 1994-12-04
5 Amani Sarrouf 1 1000.00 1991-10-27
6 Mhamad Harmush 0 700.00 1993-11-12
7 Ahmad Asaadi 1 850.00 1995-03-10
8 Mostafa Shawki 1 920.00 1990-02-14
9 Jana Alkassem 0 780.00 1991-08-12
10 Houssam Zahrani 1 880.00 1985-09-20

أمثلة حول استخدام الدالة AVG()


المثال الأول

الإستعلام التالي يقوم بعرض متوسط الرواتب التي يتم إعطاءها للموظفين في الشركة كل شهر.
ما فعلناه لحساب متوسط الرواتب هو حساب متوسط جميع الرواتب الموضوعة في العامود salary.

الإستعلام

      SELECT AVG(salary) AS 'Average Salary'    -- مع تغيير إسم العامود الذي سيتم عرضه في النتيجة salary هنا قمنا بجلب متوسط القيم الموجودة في العامود
      FROM employees;                           -- salary هنا قمنا بتحديد إسم الجدول الذي يحتوي على العامود
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
ملاحظة: الرقم يظهر فيه أكثر من رقمين بعد الفاصلة لأن عمليات الجمع و القسمة التي أجرتها الدالة AVG() أدت إلى إرجاع النتيجة بالنوع FLOAT.

Average Salary
842.500000


المثال الثاني

الإستعلام التالي هو نفس الإستعلام السابق تماماً مع فرق واحد و هو أننا قمنا بتعديل شكل القيمة التي سيتم إرجاعها في النتيجة بواسطة الدالة FORMAT() حتى تظهر رقمين فقط بعد الفاصلة لتكون مشابهة للرواتب المخزنة في العامود salary.

الإستعلام

      SELECT FORMAT(AVG(salary), 2) AS 'Average Salary ($)'    -- مع تغيير شكل القيمة التي سترجع و إسم العامود الذي سيتم عرضه في النتيجة salary هنا قمنا بجلب متوسط القيم الموجودة في العامود
      FROM employees;                                          -- salary هنا قمنا بتحديد إسم الجدول الذي يحتوي على العامود
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أن الرقم أصبح يظهر فيه رقمين فقط بعد الفاصلة.

Average Salary ($)
842.50


المثال الثالث

الإستعلام التالي يقوم بعرض متوسط الرواتب التي يتم إعطاءها للموظفين المتزوجين فقط كل شهر.
ما فعلناه لحساب متوسط رواتب المتزوجين فقط هو وضع شرط أن الحقل is_married يجب أن يساوي 1 في السطر الذي سيتم حساب أخذ قيمة salary منه.
إذاً, في أي سطر لا تكون قيمة الحقل is_married تساوي 1 سيتم تجاهل الحقل salary الموضوعة في نفس السطر. كما أننا قمنا بتعديل شكل القيمة التي سيتم إرجاعها في النتيجة بواسطة الدالة FORMAT() حتى تظهر رقمين فقط بعد الفاصلة لتكون مشابهة للرواتب المخزنة في العامود salary.

الإستعلام

      SELECT FORMAT(AVG(salary), 2) AS 'Average Salary ($)'    -- مع تغيير شكل القيمة التي سترجع و إسم العامود الذي سيتم عرضه في النتيجة salary هنا قمنا بجلب متوسط القيم الموجودة في العامود
      FROM employees                                           -- salary هنا قمنا بتحديد إسم الجدول الذي يحتوي على العامود
      WHERE is_married = 1;                                    -- في ناتج الجمع salary يجب أن يساوي 1 حتى يتم حساب قيمة الحقل is_married هنا قمنا بتحديد أن الحقل
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

Average Salary For Married ($)
910.50

مفهوم التجميع

تجميع قيم الحقول المشتركة هو أمر مفيد جداً و يستخدم لإجراء إحصاءات على القيم المخزنة في الجداول.

فمثلاً لمعرفة كم مستخدم يوجد من كل بلد, يتم تجميع أسماء البلدان و من ثم حساب عدد المستخدمين المسجلين من كل بلد.
و هنا طبعاً نقوم بحساب عدد المستخدمين في كل بلد من خلال إسم البلد المسجل عند كل مستخدم.

لتحديد العامود الذي سيتم على أساسه تجميع قيم عامود آخر, نحدد العامود الأساسي باستخدام الكلمة GROUP BY.
بعد تجميع القيم تصبح قادر على استخدام الدوال COUNT() - MAX() - MIN() - SUM() - AVG() معهم.

في هذا الدرس سنتعلم كيف نجمّع قيم الحقول المشتركة و نجري عليها إحصاءات كما نرى في البرامج و المواقع التي نستخدمها في حياتنا اليومية.


الشكل العام لتجميع الحقول

إذا كنت ستجمع الحقول فقط, شكل الإستعلام سيكون كالتالي.

    SELECT column_name(s)
    FROM table_name
    GROUP BY column_name(s); 
  

إذا كنت ستجمع الحقول و تضع شروط على القيم التي سيتم تجميعها و ترتب النتيجة النهائية, شكل الإستعلام سيكون كالتالي.

    SELECT column_name(s)
    FROM table_name
    WHERE condition
    GROUP BY column_name(s)
    ORDER BY column_name(s); 
  

  • مكان الكلمة table_name نضع إسم الجدول الذي يحتوي على الحقول التي ننوي تجميعها و إجراء إحصاء عليها.

  • مكان الكلمة condition يمكننا وضع شروط على القيم التي سيتم تجميعها من الأساس.

  • بعد الكلمة GROUP BY نضع إسم كل عامود نريد أن يتم تجميع القيم بناءاً عليه.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

      -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
      DROP DATABASE IF EXISTS harmash;

      -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
      CREATE DATABASE harmash;

      -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
      USE harmash;

      -- يتألف من 5 أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
      -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
      CREATE TABLE employees (
      id       INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
      username VARCHAR(50) NOT NULL,
      gender   VARCHAR(20),
      country  VARCHAR(50),
      salary   DECIMAL(7,2)
      );

      -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
      -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
      -- مكان كل حقل لن نقوم بوضع قيمة فيه null بما أننا لم نحدد أسماء الأعمدة التي سنملأها لاحظ أننا مجبورين على وضع كلمة
      -- الموضوعة في بداية كل أمر سيتم إستبدالها بترقيم تلقائي من قبل قاعدة البيانات null و لا تنسى أن الكلمة
      INSERT INTO employees VALUES (null, "rami", "male", "Lebanon", 700);
      INSERT INTO employees VALUES (null, "ahmad", "male", "Syria", 800);
      INSERT INTO employees VALUES (null, "hanan", "female", "KSA", 750);
      INSERT INTO employees VALUES (null, "saly", "female", "Lebanon", 650);
      INSERT INTO employees VALUES (null, "samir", "male", "Egypt", 600);
      INSERT INTO employees VALUES (null, "hamad", "male", "KSA", 700);
      INSERT INTO employees VALUES (null, "abdullah", "male", "KSA", 800);
      INSERT INTO employees VALUES (null, "rashed", "male", "Oman", 900);
      INSERT INTO employees VALUES (null, "majed", "male", "Yaman", 820);
      INSERT INTO employees VALUES (null, "malak", "female", "Morocco", 860);
    

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.


البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول employees.

id user gender country salary
1 rami male Lebanon 700.00
2 ahmad male Syria 800.00
3 hanan female KSA 750.00
4 saly female Lebanon 650.00
5 samir male Egypt 600.00
6 hamad male KSA 700.00
7 abdullah male KSA 800.00
8 rashed male Oman 900.00
9 majed male Yaman 820.00
10 malak female Morocco 860.00

أمثلة حول تجميع قيم الأعمدة


المثال الأول

الإستعلام التالي يقوم بتجميع أسماء البلدان الموجودة في جدول الموظفين.

لتجميع أسماء البلدان الموجودة في الحقل country استخدمنا الكلمة GROUP BY و وضعنا بعدها الحقل country للإشارة إلى أننا نريد تجميعهم نسبةً لأسماء البلدان المشتركة.

ملاحظة: في هذا المثال بالتحديد كان من الأفضل و الأسهل إستخدام الكلمة DISTINCT بدلاً منها لأنها ستعطينا نفس النتيجة و لكن هدفنا الآن تعليمك كيف تستخدم GROUP BY خطوة خطوة لهذا وضعنا هذا المثال البسيط.

الإستعلام

      SELECT country
      FROM employees
      GROUP BY country;
    

في حال كنت تريد فقط الحصول على أسماء البلدان بدون إجراء أي إحصاء, فيمكنك أيضاً كتابة الإستعلام كالتالي كما رأينا في الدروس السابقة.

      SELECT DISTINCT country
      FROM employees;
    

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

country
Egypt
KSA
Lebanon
Morocco
Oman
Syria
Yaman


المثال الثاني

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

ما فعلناه لإجراء هذا الإحصاء هو تجميع أسماء البلدان الموجودة في الحقل country بواسطة الكلمة GROUP BY.
بعدها قمنا باستخدام الدالة COUNT() لحساب عدد الموظفين الموجودين في كل مجموعة, أي الموظفين الذين عندهم نفس قيمة الحقل country.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT country, COUNT(id)   -- country يوجد سيتم حساب عدده بعد أن يتم تجميع قيم الحقل id إحصاء كم
      FROM employees
      GROUP BY country;           -- على أساسهم COUNT() سيتم تنفيذ الدالة country بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT country AS 'country', COUNT(id) AS 'Number of Employees'
      FROM employees
      GROUP BY country;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.
لاحظ أنه يوجد ثلاث موظفين من KSA و إثنين من Lebanon و باقي الدول يوجد واحد فيها.

Country Number of Employees
Egypt 1
KSA 3
Lebanon 2
Morocco 1
Oman 1
Syria 1
Yaman 1


المثال الثالث

الإستعلام التالي يقوم بحساب عدد الموظفين الذكور و الإناث الموجودين في الشركة.

ما فعلناه لإجراء هذا الإحصاء هو تجميع جنس الموظفين الموجود في الحقل gender بواسطة الكلمة GROUP BY.
بعدها قمنا باستخدام الدالة COUNT() لحساب عدد الموظفين الموجودين في كل مجموعة, أي عدد الموظفين الذين عندهم نفس قيمة الحقل gender.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT gender, COUNT(id)   -- gender يوجد في كل مجموعة, سيتم حسابه بعد تجميع قيم العامود id إحصاء كم
      FROM employees
      GROUP BY gender;           -- على أساسهم COUNT() سيتم تنفيذ الدالة gender بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT gender AS 'Gender', COUNT(id) AS 'Number of Employees'
      FROM employees
      GROUP BY gender;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.

Gender Number of Employees
female 3
male 7


المثال الرابع

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

ما فعلناه لإجراء هذا الإحصاء هو تجميع أسماء البلدان الموجودة في الحقل country بواسطة الكلمة GROUP BY.
بعدها قمنا باستخدام الدالة AVG() لحساب متوسط رواتب الموظفين الموجودين في كل مجموعة, أي متوسط الموظفين الذين عندهم نفس قيمة الحقل country.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT country, AVG(salary)   -- country سيتم حسابه بعد أن يتم تجميع قيم الحقل salary متوسط الحقول
      FROM employees
      GROUP BY country;             -- على أساسهم AVG() سيتم تنفيذ الدالة country بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة و طريقة ظهور متوسط الرواتب حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT
      country AS 'country',
      FORMAT(AVG(salary), 2) AS 'Average Salary'
      FROM
      employees
      GROUP BY
      country;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.

Country Average Salary
Egypt 600.00
KSA 750.00
Lebanon 675.00
Morocco 860.00
Oman 900.00
Syria 800.00
Yaman 820.00


المثال الخامس

الإستعلام التالي يقوم بحساب كم موظف موجود من كل بلد بالإضافة إلى مجموع الراتب الذي يتم إعطاؤه لهم.

ما فعلناه لإجراء هذا الإحصاء هو تجميع أسماء البلدان الموجودة في الحقل country بواسطة الكلمة GROUP BY.
بعدها قمنا باستخدام الدالة COUNT() لحساب عدد الموظفين الموجودين في كل مجموعة و الدالة SUM() لحساب مجموع الرواتب التي يتم إعطاءها لكل مجموعة, أي الموظفين الذين عندهم نفس قيمة الحقل country سيتم حساب عددهم مجموع مرتبهم بشكل خاص.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT country, COUNT(id), SUM(salary)   -- country يوجد في كل مجموعة, و كم هو مجموع الرواتب التي يتم دفعها لكل مجموعة سيتم حسابهم بعد تجميع قيم العامود id إحصاء كم
      FROM employees
      GROUP BY country;                        -- على أساسهم SUM() و COUNT() سيتم تنفيذ الدالتين country بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT
      country AS 'country',
      COUNT(id) AS 'Number of Employees',
      SUM(salary) AS 'Total Salary',
      FROM
      employees
      GROUP BY
      country;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.

Country Number of Employees Total Salary
Egypt 1 600.00
KSA 3 2250.00
Lebanon 2 1350.00
Morocco 1 860.00
Oman 1 900.00
Syria 1 800.00
Yaman 1 820.00


المثال السادس

الإستعلام التالي يقوم بتجميع الموظفين مرتين قبل إجراء الإحصاء على النحو التالي:

  • أول مرة يجمع الموظفين على حسب بلدانهم.

  • ثاني مرة يجمع الموظفين المنتمين لنفس البلد على حسب جنسهم.

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

ما فعلناه لإجراء هذا الإحصاء هو تجميع أسماء البلدان الموجودة في الحقل country و أسماء الأجناس المذكورة في الحقل gender بواسطة الكلمة GROUP BY.
بعدها قمنا باستخدام الدالة COUNT() لحساب عدد الموظفين الموجودين في نفس البلد و الذين عندهم نفس الجنس, أي الموظفين الذين عندهم نفس قيمة الحقل country و نفس قيمة الحقل gender سيتم حساب عددهم بشكل خاص.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT country, gender, COUNT(id)   -- gender و country يوجد في كل مجموعة سيتم حسابه بعد تجميع قيم العامودين id إحصاء كم
      FROM employees
      GROUP BY country, gender;           -- على أساسهم COUNT() سيتم تنفيذ الدالة gender و من ثم في العامود country بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT 
      country AS 'Country',
      gender AS 'Gender',
      COUNT(id) AS 'Number of Employees'
      FROM
      employees
      GROUP BY
      country, gender;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.
لاحظ أنه في حال كان يوجد بلد فيه موظفين ذكور و إناث فإن إسم البلد يظهر مرتين حتى يفصل لك عدد الذكور عن عدد الإناث.

Country Gender Number of Employees
Egypt male 1
KSA female 1
KSA male 2
Lebanon female 1
Lebanon male 1
Morocco female 1
Oman male 1
Syria male 1
Yaman male 1

النتيجة التي حصلنا عليها نقرأها كالتالي:

  • هناك موظف واحد من Egypt

  • هناك ثلاث موظفين من KSA إثنين ذكور و أنثى واحدة.

  • هناك موظفَين من Lebanon و هما ذكر واحد و أنثى واحدة.

  • هناك موظفة واحدة من Morocco

  • هناك موظف واحد من Oman

  • هناك موظف واحد من Syria

  • هناك موظف واحد من Yaman



المثال السابع

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

ما فعلناه لإجراء هذا الإحصاء تحديد أن قيمة gender يجب أن تكون 'male' في أي سطر سيتم جلب إسم البلد منه.
بعدها قمنا بتجميع أسماء البلدان الموجودة في الحقل country بواسطة الكلمة GROUP BY.
في النهاية قمنا باستخدام الدالة COUNT() لحساب عدد الموظفين الموجودين في كل مجموعة, أي الموظفين الذين عندهم نفس قيمة الحقل country و عندهم gender يساوي 'male'.

الإستعلام

الإستعلام التالي هو ما يجب كتابته بالضبط للحصول على الإحصاء المطلوب.

      SELECT country, COUNT(id)   -- country يوجد سيتم حساب عدده بعد أن يتم تجميع قيم الحقل id إحصاء كم
      FROM employees
      WHERE gender = 'male'       -- 'male' يساوي gender سيتم وضعه في المجموعة يجب أن يكون السطر الذي تم جلبه منه عنده الحقل country أي
      GROUP BY country;           -- على أساسهم COUNT() سيتم تنفيذ الدالة country بعد أن يتم تجميع القيم الموجودة في العامود
    

نفس الإستعلام السابق و لكننا قمنا بتغيير أسماء الأعمدة حتى تظهر النتيجة النهائية بشكل أوضح و مفهوم.

      SELECT country AS 'country', COUNT(id) AS 'Number of Male Employees'
      FROM employees
      WHERE gender = 'male'
      GROUP BY country;
    

سنحصل على النتيجة التالية عند تنفيذ الإستعلام الذي غيّرنا أسماء أعمدته.
لاحظ أنه يوجد ثلاث موظفين من KSA و إثنين من Lebanon و باقي الدول يوجد واحد فيها.

Country Number of Male Employees
Egypt 1
KSA 2
Lebanon 1
Oman 1
Syria 1
Yaman 1