Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحويل الصفوف إلى أعمدة

جزء من قسم ما وراء الأساسيات في رحلة SQL على Coddy — الدرس 14 من 27.

اجمع بين التجميع الشرطي و GROUP BY لتحويل الصفوف إلى أعمدة. إنها نسخة SQL من عملية الـ pivot في جداول البيانات.

افترض أن sales يحتوي على صفوف مثل (month, product, units). لعرض صف واحد لكل شهر مع عمود واحد لكل منتج:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

إن مجموعة GROUP BY التي يراها كل SUM(CASE …) هي الصفوف الخاصة بشهر واحد؛ بينما يختار CASE الشريحة لمنتج واحد.

challenge icon

التحدي

سهل

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

  • <strong>sales</strong>: <strong>month</strong>, <strong>product</strong>, <strong>units</strong>

قم بتحويل البيانات (Pivot) بحيث يمثل كل صف month واحداً بالأعمدة التالية:

  • month
  • apples: إجمالي الـ units للمنتج 'apples' في ذلك الشهر
  • bananas: نفس الشيء لـ 'bananas'
  • cherries: نفس الشيء لـ 'cherries'
  • total: إجمالي الـ units لجميع المنتجات في ذلك الشهر

أرجع فقط الأشهر التي يكون فيها الـ total لا يقل عن 20. رتب النتائج حسب الـ month.

ورقة مرجعية

استخدم التجميع الشرطي (conditional aggregation) مع GROUP BY لتحويل الصفوف إلى أعمدة:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b,
    SUM(units) AS total
FROM sales
GROUP BY month
HAVING SUM(units) >= threshold
ORDER BY month

يقوم كل SUM(CASE …) بجمع الصفوف التي تطابق ذلك المنتج فقط داخل كل مجموعة (bucket) خاصة بـ GROUP BY.

جرّب بنفسك

SELECT month,
       -- واحد SUM(CASE ...) لكل product، بالإضافة إلى total
FROM sales
GROUP BY month
-- تصفية الأشهر التي يكون فيها total >= 20
ORDER BY month
quiz iconاختبر نفسك

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

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