1. نظرة عامة على دالة COUNT في MySQL
دالة COUNT في MySQL هي أداة مفيدة جداً لاسترداد عدد الصفوف التي تطابق عموداً محدداً أو شرطاً. باستخدام هذه الدالة، يمكنك بسهولة عد السجلات في قاعدة البيانات الخاصة بك. على سبيل المثال، يمكنك عد جميع الصفوف في جدول أو حساب عدد السجلات بناءً على شروط محددة.
الصيغة الأساسية لدالة COUNT()
الاستخدام الأساسي لدالة COUNT هو كالتالي:
SELECT COUNT(*) FROM table_name;
هذا الاستعلام يعد جميع الصفوف في الجدول المحدد. إذا كنت تريد عد عدد القيم في عمود محدد، يمكنك كتابة:
SELECT COUNT(column_name) FROM table_name;
في هذه الحالة، يتم تجاهل أي قيم NULL في العمود المحدد ولا تُدرج في العد.
مثال: تجاهل قيم NULL
على سبيل المثال، إذا كان العمود age الذي يخزن أعمار المستخدمين يحتوي على قيم NULL، يمكنك استبعادهم باستخدام الاستعلام التالي:
SELECT COUNT(age) FROM users WHERE age IS NOT NULL;
هذا الاستعلام يعد فقط قيم age التي ليست NULL.

2. دمج COUNT مع DISTINCT
من الشائع أن تخزن قواعد البيانات قيماً مكررة. في مثل هذه الحالات، يمكنك دمج DISTINCT مع دالة COUNT لإرجاع عدد القيم الفريدة. كلمة المفتاح DISTINCT تزيل التكرارات قبل العد.
مثال على استخدام COUNT مع DISTINCT
الاستعلام التالي يعد عدد الأسماء الفريدة في العمود name:
SELECT COUNT(DISTINCT name) FROM users;
على سبيل المثال، حتى لو كان جدول users يحتوي على صفوف متعددة باسم “taro”، فسيتم عدّه مرة واحدة فقط.
3. العد مع الشروط باستخدام WHERE
يمكن دمج دالة COUNT مع بند WHERE لعد الصفوف التي تلبي شروطاً محددة فقط. هذا مفيد بشكل خاص عندما تريد استرداد بيانات تطابق معايير معينة.
مثال: العد الشرطي
الاستعلام التالي يعد عدد المستخدمين الذين تتجاوز أعمارهم 25 عاماً أو تساويها:
SELECT COUNT(*) FROM users WHERE age >= 25;
هذا الاستعلام يرجع عدد الصفوف في جدول users حيث يكون العمود age 25 أو أكبر.
مثال متقدم لدالة COUNT
يمكنك أيضاً العد باستخدام شروط متعددة. على سبيل المثال، لعد المستخدمين الذين تتجاوز أعمارهم 25 عاماً أو تساويها وهم ذكور، يمكنك كتابة:
SELECT COUNT(*) FROM users WHERE age >= 25 AND gender = 'Male';
هذا الاستعلام يعد الصفوف التي تلبي كلا الشرطين المحددين.

4. تجميع البيانات والعد مع GROUP BY
يسمح بند GROUP BY بتجميع البيانات حسب حقل محدد ثم عد الصفوف داخل كل مجموعة. هذا مفيد جداً، على سبيل المثال، عند عد الموظفين لكل قسم.
مثال على استخدام GROUP BY مع COUNT
الاستعلام التالي يعد عدد الموظفين في كل قسم:
SELECT department, COUNT(*) FROM employees GROUP BY department;
هذا الاستعلام يرجع عدد الموظفين لكل قسم. بند GROUP BY يجمع الصفوف حسب عمود department ويعد الصفوف في كل مجموعة.
5. العد الشرطي مع عبارات IF
يمكن استخدام دالة COUNT مع عبارات IF لتعيين شروط أكثر تقدماً. على سبيل المثال، إذا كنت تريد تطبيق قواعد عد مختلفة بناءً على شرط، يمكنك التحكم في المنطق باستخدام IF.
مثال: العد مع IF
الاستعلام التالي يعد عدد الموظفين الذين يتجاوز راتبهم 50,000:
SELECT COUNT(IF(salary > 50000, 1, NULL)) FROM employees;
هذا الاستعلام يعد فقط الصفوف حيث يكون salary أكبر من 50,000. العبارة IF ترجع 1 إذا تم تلبية الشرط و NULL خلاف ذلك، والتي يتم تجاهلها بواسطة COUNT.
6. حالات الاستخدام العملية لدالة COUNT
تُستخدم دالة COUNT على نطاق واسع في إدارة قواعد البيانات اليومية. على سبيل المثال، تساعد في الحفاظ على سلامة البيانات بعدد المستخدمين المسجلين أو عدد معاملات المبيعات.
حالة الاستخدام 1: عد المستخدمين المسجلين
يحتاج مديرو المواقع غالبًا إلى معرفة عدد المستخدمين المسجلين. يمكنك استخدام الاستعلام التالي:
SELECT COUNT(*) FROM users;
يحسب هذا الاستعلام جميع الصفوف في جدول users ويعيد إجمالي عدد المستخدمين المسجلين.
حالة الاستخدام 2: عد بيانات المبيعات
لإدارة بيانات المبيعات، قد ترغب في معرفة عدد المرات التي تم فيها بيع منتج معين. يمكن استخدام الاستعلام التالي:
SELECT COUNT(*) FROM sales WHERE product_id = 123;
يحسب هذا الاستعلام سجلات المبيعات حيث يكون product_id هو 123.

7. استكشاف الأخطاء الشائعة مع COUNT
عند استخدام دالة COUNT، قد تنشأ مشكلات عند التعامل مع قيم NULL أو بيانات مكررة. من المهم معرفة كيفية التعامل مع هذه الحالات لتجنب الأخطاء وضمان نتائج دقيقة.
المشكلات والحلول مع بيانات NULL
عند استخدام COUNT(column_name)، لا يتم عد قيم NULL. إذا كنت ترغب في عد جميع الصفوف بما في ذلك قيم NULL، يُوصى باستخدام COUNT(*) . لعد قيم غير NULL فقط في عمود، أضف شرط IS NOT NULL:
SELECT COUNT(column_name) FROM table_name WHERE column_name IS NOT NULL;


