CASE WHEN
جزء من قسم ما وراء الأساسيات في رحلة SQL على Coddy — الدرس 1 من 27.
تعبير CASE هو بمثابة if/else if/else للغة SQL. يتواجد داخل SELECT (أو ORDER BY، أو WHERE) ويقوم بإنتاج قيمة لكل صف.
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM studentsيتم فحص كل WHEN من الأعلى إلى الأسفل؛ وأول تطابق هو الذي يفوز. إنّ ELSE اختياري. وبدونه، تحصل الصفوف غير المتطابقة على NULL.
انتهِ دائمًا بـ END وقم بتسمية العمود باستخدام AS.
التحدي
سهلالجداول والأعمدة المتاحة:
<strong>employees</strong>:<strong>id</strong>,<strong>name</strong>,<strong>department</strong>,<strong>salary</strong>
لكل موظف، قم بإرجاع name و department وعمود tier يتم بناؤه على النحو التالي:
'partner'عندما يكونsalary >= 150000(أي قسم)'senior'عندما يكونdepartment = 'eng'وsalary >= 100000'mid'عندما يكونsalary >= 60000'entry'خلاف ذلك
رتب حسب salary تنازلياً. لاحظ أن ترتيب فروع WHEN مهم: أول تطابق هو الذي يفوز.
ورقة مرجعية
تعمل CASE مثل if/else داخل SELECT، حيث تنتج قيمة لكل صف:
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
ELSE 'F'
END AS grade
FROM students- يتم التحقق من الشروط من الأعلى إلى الأسفل؛ أول مطابقة هي التي تفوز
ELSEاختياري — بدونه، الصفوف غير المتطابقة تعيدNULL- أغلق دائماً بـ
END؛ استخدمASلتسمية العمود
جرّب بنفسك
SELECT name, department,
-- مستوى مع فروع WHEN متعددة تمزج بين salary و department
FROM employees
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس ما وراء الأساسيات
1المنطق الشرطي
CASE WHENاستخدام CASE في ORDER BYدالة COALESCE للتعامل مع قيم NULLدالتا NULLIF و IIFمراجعة - الحضور