الدرس 9 من 10

تصنيف بالشروط

هدف الدرس

الجملة CASE WHEN

01

الشرح

تصنّف بـCASE القيم داخل الاستعلام نفسه، فهو يجرّب شروط WHEN بالترتيب، ويُرجع قيمة أول شرط يتحقّق ثم يتوقّف.

CASE WHEN price >= 500 THEN 'فاخر' WHEN price >= 100 THEN 'متوسط' ELSE 'اقتصادي' END AS band

ولهذا تكتب الشرط الأضيق أولًا، فلو قدّمت price >= 100 لدخلت فيه المنتجات الفاخرة أيضًا، لأنّ كل ما فوق 500 هو فوق 100 كذلك. وإن لم تكتب ELSE فإنّ ما لم يطابق أيّ شرط يأخذ القيمة NULL.

02

المطلوب

اعرض name وstock وعمودًا اسمه status قيمته 'نافد' إن كان المخزون صفرًا، و'قليل' إن كان أقلّ من 10، و'متاح' فيما عدا ذلك.

الفحوص

5 فحوص
  1. الأعمدة name وstock وstatus
  2. كل المنتجات موجودة
  3. المنتج الذي مخزونه صفر «نافد» لا «قليل»
  4. المخزون من 1 إلى 9 «قليل»
  5. المخزون من 10 فأكثر «متاح»
الجداول المتاحة في هذا الدرس
CREATE TABLE products (
  id       INTEGER PRIMARY KEY,
  name     TEXT    NOT NULL,
  category TEXT    NOT NULL,
  price    INTEGER NOT NULL,
  stock    INTEGER NOT NULL
);

INSERT INTO products (name, category, price, stock) VALUES
  ('شاشة 27 بوصة',  'تقنية',   899,   4),
  ('سماعة لاسلكية', 'تقنية',   249,  12),
  ('لوحة مفاتيح',   'تقنية',   189,   0),
  ('شاحن سريع',     'تقنية',    79,  40),
  ('كرسي مكتب',     'منزل',    649,   3),
  ('رف كتب',        'منزل',    249,   7),
  ('مصباح مكتب',    'منزل',    100,  18),
  ('حقيبة ظهر',     'قرطاسية', 180,  22),
  ('دفتر ملاحظات',  'قرطاسية',  15, 200),
  ('أقلام ملونة',   'قرطاسية',  25,   0),
  ('قاموس عربي',    'كتب',      95,  10),
  ('رواية',         'كتب',      45,  30);
query.sql
المخرجاتSQLite (sql.js)

نحمّل بيئة SQLite الآن.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».