الاستعلامات الفرعية - الجزء الثاني
جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 39 من 72.
هناك ثلاثة أنواع رئيسية من الاستعلامات الفرعية:
- الاستعلامات الفرعية القياسية (Scalar Subqueries) - ترجع قيمة واحدة (صف واحد، عمود واحد)
- استعلامات الصف الفرعية (Row Subqueries) - ترجع صفاً واحداً بأعمدة متعددة
- استعلامات الجدول الفرعية (Table Subqueries) - ترجع صفوفاً وأعمدة متعددة
على سبيل المثال، إليك بعض حالات الاستخدام لكل نوع من الاستعلامات الفرعية:
الاستعلام الفرعي الأحادي القيمة (Scalar Subquery) - العثور على الموظفين الذين يتقاضون أجورًا أعلى من متوسط الـ salary:
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);استعلام فرعي لصف (Row Subquery) - البحث عن الموظف (أو الموظفين) الذين لديهم نفس `department` و `salary` الخاصين بـ `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;لاحظ حالات الاستخدام:
- مفرد (Scalar) - مقارنات بسيطة (>، <، =)
- عندما تحتاج إلى المطابقة بين عدة أعمدة
- عندما تحتاج إلى الاستعلام من مجموعة نتائج
التحدي
سهلالجداول والأعمدة المتاحة:
shop:price،quantity،category،list_date
أوجد الفئات (categories) التي يكون إجمالي الكمية (quantity) لها أكبر من متوسط جميع الكميات في shop.
هام: يجب عليك استخدام استعلام فرعي (subquery) داخل الجملة HAVING لحساب المتوسط. لا تستخدم قيمة ثابتة محددة مسبقًا أو استعلامًا منفصلاً — يجب أن يحسب الاستعلام الفرعي AVG(quantity) من الجدول shop مباشرةً داخل HAVING.
خطوات الحل:
- أولاً، اكتب استعلامًا فرعيًا يحسب متوسط جميع الكميات في الجدول
shop:SELECT AVG(quantity) FROM shop - بعد ذلك، لكل
category، قم بجمع الكميات الخاصة بها وقارنها بهذا الاستعلام الفرعي باستخدام الكلمة المفتاحيةHAVING
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGE