Menu
CoddyTech

الاستعلامات الفرعية - الجزء الثاني

جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 39 من 72.

هناك ثلاثة أنواع رئيسية من الاستعلامات الفرعية:

  1. الاستعلامات الفرعية القياسية - تُرجع قيمة واحدة (صفًا واحدًا وعمودًا واحدًا)
  2. الاستعلامات الفرعية للصفوف - تُرجع صفًا واحدًا بأعمدة متعددة
  3. الاستعلامات الفرعية للجدول - تُرجع صفوفًا وأعمدة متعددة

على سبيل المثال، إليك بعض حالات الاستخدام لكل نوع من أنواع الاستعلامات الفرعية:

الاستعلام الفرعي القياسي - البحث عن الموظفين الذين يتقاضون راتبًا أعلى من متوسط الراتب:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

الاستعلام الفرعي للصف - العثور على الموظف (الموظفين) الذين لديهم القسم والراتب نفسيهما مثل Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

الاستعلامات الفرعية للجداول - إظهار الأقسام وعدد موظفيها

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

لاحظ حالات الاستخدام:

  • قياسي - مقارنات بسيطة (>, <, =)
  • عندما تحتاج إلى مطابقة أعمدة متعددة
  • عندما تحتاج إلى الاستعلام من مجموعة نتائج
challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • shop: price، quantity، category، list_date

ابحث عن الفئات التي تكون كميتها الإجمالية أكبر من متوسط جميع الكميات في المتجر. أرجِع category والكمية المُجمَّعة باسم total_quantity.

مهم: يجب استخدام استعلام فرعي داخل عبارة HAVING لحساب المتوسط. لا تستخدم قيمة ثابتة أو استعلامًا منفصلًا: يجب أن يحسب الاستعلام الفرعي AVG(quantity) من جدول shop مباشرةً داخل HAVING.

خطوات الحل:

  1. أولًا، اكتب استعلامًا فرعيًا يحسب متوسط جميع الكميات في المتجر: SELECT AVG(quantity) FROM shop
  2. بعد ذلك، لكل فئة، اجمع كمياتها وقارنها بهذا الاستعلام الفرعي باستخدام الكلمة المفتاحية HAVING

جرّب بنفسك

quiz iconاختبر نفسك

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

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ SQL