تعيد COUNT في Oracle عددًا، لكن النتيجة تختلف بحسب ما تعده: الصفوف كلها أم القيم غير الفارغة أم القيم المتميزة. لا تحتاج استبدال NULL للحصول على عدد الصفوف؛ COUNT(*) تقوم بذلك مباشرة.
تستخدم الأمثلة جداول التدريب في درس إنشاء جداول وبيانات تدريب Oracle. نفّذ إعدادها مرة واحدة في مخطط تدريب قبل الاستعلامات، حتى تتطابق أسماء الأعمدة والنتائج.
مثال SQL قابل للنسخ
SELECT COUNT(*) AS total_rows,
COUNT(job) AS non_null_jobs,
COUNT(DISTINCT job) AS distinct_jobs,
COUNT(NVL(job, 'Unassigned')) AS jobs_with_placeholder
FROM gc_employees;
SELECT COUNT(*) AS developer_count
FROM gc_employees
WHERE job = 'developer';النتائج المتوقعة
في بيانات التدريب COUNT(*) تساوي 7، وCOUNT(job) تساوي 6 لأن وظيفة Mona غير معروفة، وCOUNT(DISTINCT job) تساوي 3 وهي developer وmarketing وsales. أما COUNT(NVL(job, ‘Unassigned’)) فتساوي 7 لأن كل صف أصبح له تعبير غير فارغ. عدد المطورين في الاستعلام الثاني 3.
NULL والقيم المتميزة
COUNT(column) لا تعد NULL. إضافة DISTINCT تجعل العد للقيم المختلفة غير الفارغة، وليس لعدد الصفوف. عرض الوظائف باستخدام SELECT DISTINCT قد يتضمن صف NULL، بينما COUNT(DISTINCT job) لا تعده؛ هذه نقطة مهمة عند مقارنة العدد بالقائمة المعروضة.
المجموعات والجدول الخالي
من دون GROUP BY يرجع COUNT صفًا واحدًا بقيمة صفر إذا لم توجد نتائج. مع GROUP BY لا تظهر مجموعة ليس لها أي صف مطابق أصلًا. إذا كنت تستخدم LEFT JOIN لعرض كيانات بلا علاقات، فعد مفتاح الجدول المرتبط بدل النجمة حتى لا تحسب الصف الخارجي المحتفظ به على أنه علاقة فعلية.
الصور والفيديو من الشرح السابق
الكود النصي أعلاه هو النسخة المصححة؛ قد تختلف المواد المرئية السابقة في أسماء المتغيرات أو طريقة التشغيل.







