0Pricing
SQL Academy · درس

تجميع البيانات وتسميتها

حوّل القيم إلى فئات

تجميع البيانات وتسميتها درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما المقصود بالتقسيم إلى فئات؟

يعني التقسيم إلى فئات تجميع القيم الأولية ضمن فئات تحمل أسماء، أي تحويل الأرقام أو التواريخ أو الرموز إلى تسميات سهلة الفهم.

بدلًا من عرض درجة مقدارها 87، تعرضون «جيد». وبدلًا من عرض عمر مقداره 14، تعرضون «مراهق». ويُعد تعبير CASE أداتكم الأساسية لتنفيذ ذلك.

جدول نموذجي: orders

سنستخدم جدول orders طوال هذا الدرس. يحتوي كل صف على مبلغ الطلب ورمز حالته.

شغّلوا الاستعلام أدناه لرؤية البيانات التي سنعمل عليها.

SELECT id, customer, amount, status
FROM orders
ORDER BY id;

وضع التسميات باستخدام CASE WHEN

يتحقق أبسط نمط للتقسيم إلى فئات من شرط، ثم يعيّن تسمية. تُرجع كتلة CASE WHEN ... THEN ... ELSE ... END سلسلة نصية جديدة لكل صف.

نضع هنا تسمية لكل طلب، فإما أن يكون 'Large' أو 'Small' بناءً على مبلغه.

SELECT id,
       amount,
       CASE
         WHEN amount >= 500 THEN 'Large'
         ELSE 'Small'
       END AS order_size
FROM orders;

فئات متعددة باستخدام تسلسل WHEN

يمكنكم إضافة أي عدد تحتاجونه من عبارات WHEN. يفحصها SQL من الأعلى إلى الأسفل ويتوقف عند أول تطابق.

يقسم هذا المثال المبالغ إلى ثلاث فئات: Small وMedium وLarge.

SELECT id,
       amount,
       CASE
         WHEN amount < 100  THEN 'Small'
         WHEN amount < 500  THEN 'Medium'
         ELSE 'Large'
       END AS order_tier
FROM orders;

تقسيم القيم النصية إلى فئات

لا يقتصر التقسيم إلى فئات على الأرقام؛ إذ يمكنكم مطابقة قيم نصية محددة واستبدالها بتسميات أوضح.

تحوّل القيم الأولية لحالات الطلب 'P' و'S' و'C' إلى كلمات سهلة القراءة.

SELECT id,
       status,
       CASE status
         WHEN 'P' THEN 'Pending'
         WHEN 'S' THEN 'Shipped'
         WHEN 'C' THEN 'Cancelled'
         ELSE 'Unknown'
       END AS status_label
FROM orders;

استخدام صيغة CASE البسيط

عندما تقارنون عمودًا واحدًا بعدة قيم ثابتة، تكون صيغة CASE البسيط (CASE column WHEN value ...) أقصر وأسهل قراءة من تكرار اسم العمود في كل عبارة WHEN.

والنتيجة مطابقة تمامًا لنتيجة الصيغة المُبحَث عنها.

SELECT id,
       CASE status
         WHEN 'P' THEN 'Pending'
         WHEN 'S' THEN 'Shipped'
         WHEN 'C' THEN 'Cancelled'
         ELSE 'Unknown'
       END AS status_label
FROM orders;

التقسيم إلى فئات داخل GROUP BY

بعد إنشاء تسمية للفئة، يمكنكم التجميع باستخدامها لحساب عدد الصفوف التي تندرج ضمن كل فئة. ضعوا تعبير CASE كاملًا داخل GROUP BY.

يوضح هذا الاستعلام عدد الطلبات من الفئات Small وMedium وLarge.

SELECT
  CASE
    WHEN amount < 100  THEN 'Small'
    WHEN amount < 500  THEN 'Medium'
    ELSE 'Large'
  END AS order_tier,
  COUNT(*) AS total_orders
FROM orders
GROUP BY
  CASE
    WHEN amount < 100  THEN 'Small'
    WHEN amount < 500  THEN 'Medium'
    ELSE 'Large'
  END;

التقسيم إلى فئات باستخدام اسم مستعار لاستعلام فرعي

يؤدي تكرار كتلة CASE طويلة داخل GROUP BY إلى كتابة مطوّلة. ويتمثل الأسلوب الأنظف في وضع الاستعلام الأساسي داخل استعلام فرعي (أو CTE)، بحيث يمكنكم الإشارة إلى الاسم المستعار مباشرةً.

SELECT order_tier, COUNT(*) AS total_orders
FROM (
  SELECT
    CASE
      WHEN amount < 100  THEN 'Small'
      WHEN amount < 500  THEN 'Medium'
      ELSE 'Large'
    END AS order_tier
  FROM orders
) AS bucketed
GROUP BY order_tier;

الفئات الرقمية: مجموعات الأعمار

يُعد تجميع الأعمار من الاستخدامات الشائعة للتقسيم إلى فئات. يعيّن الاستعلام أدناه كل عميل إلى فئة عمرية تحمل اسمًا.

لاحظوا أن الشروط تنتقل من الأصغر إلى الأكبر؛ إذ يتوقف SQL عند أول WHEN تكون قيمته صحيحة، ولذلك يهم ترتيبها.

SELECT name,
       age,
       CASE
         WHEN age < 13 THEN 'Child'
         WHEN age < 18 THEN 'Teen'
         WHEN age < 65 THEN 'Adult'
         ELSE 'Senior'
       END AS age_group
FROM customers;

وضع تسمية لقيم NULL ضمن فئة

إذا كانت قيمة ما هي NULL، فلن يطابقها أي شرط WHEN (باستثناء IS NULL). ومن دون تحقق صريح، تنتقل قيم NULL إلى فرع ELSE.

أضيفوا عبارة WHEN column IS NULL لمنح قيم NULL تسميةً خاصة بها.

SELECT id,
       amount,
       CASE
         WHEN amount IS NULL THEN 'No Data'
         WHEN amount < 100   THEN 'Small'
         WHEN amount < 500   THEN 'Medium'
         ELSE 'Large'
       END AS order_tier
FROM orders;

التقسيم إلى فئات في ORDER BY

يمكنكم أيضًا استخدام تعبير CASE مباشرةً داخل ORDER BY للتحكم في أولوية الترتيب من دون إضافة عمود جديد.

يعرض المثال أدناه دائمًا الطلبات قيد الانتظار أولًا، ثم الطلبات المشحونة، ثم الطلبات الملغاة.

SELECT id, customer, status
FROM orders
ORDER BY
  CASE status
    WHEN 'P' THEN 1
    WHEN 'S' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
  END;

اختبار سريع

اختبروا مدى فهمكم لتقسيم البيانات إلى فئات ووضع تسميات لها باستخدام CASE.

مراجعة الدرس

أحسنتم! إليكم ما تعلمتموه عن تقسيم البيانات إلى فئات ووضع تسميات لها:

  • يحوّل التقسيم إلى فئات القيم الأولية إلى فئات تحمل أسماء باستخدام CASE WHEN.
  • تُنشئ سلاسل عبارات WHEN فئات متعددة؛ ويتوقف SQL عند أول تطابق.
  • تُعد صيغة CASE البسيط (CASE col WHEN val) مثالية عند مقارنة عمود واحد بقيم ثابتة.
  • يمكنكم استخدام تعبير CASE مع GROUP BY لحساب عدد الصفوف في كل فئة.
  • عالجوا دائمًا قيم NULL صراحةً باستخدام WHEN col IS NULL حتى تحصل على تسمية مفيدة.
  • يعمل CASE أيضًا داخل ORDER BY لتحديد أولوية ترتيب مخصصة.

يجعل التقسيم إلى فئات التقارير أكثر سهولة في القراءة، باستبدال الرموز والأرقام الأولية بتسميات واضحة ووصفية.

الأسئلة الشائعة

هل درس «تجميع البيانات وتسميتها» مجاني؟

نعم — نص درس «تجميع البيانات وتسميتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «تجميع البيانات وتسميتها»؟

حوّل القيم إلى فئات تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تجميع البيانات وتسميتها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعبير CASE
  2. CASE البسيط مقابل CASE البحث
  3. تجميع البيانات وتسميتها
  4. CASE في ORDER BY والتجميعات
← العودة إلى SQL Academy