كيفية استخدام التعابير الرياضية والدوال التجميعية في SQL


كيفية استخدام التعابير الرياضية والدوال التجميعية في SQL

يا هلا! اليوم راح نشوف كيف تستغل قوة SQL في الحسابات، سواء كانت تعابير رياضية بسيطة أو دوال تجميعية معقدة. الموضوع مرة سهل ومفيد، خصوصاً لما تحتاج تحلل بياناتك.

1. التعابير الرياضية (Mathematical Expressions)

تقدر تسوي عمليات حسابية مباشرة على الأعمدة أو القيم الثابتة في جملة SELECT. الأوبيريتورز (المعاملات) اللي نعرفها كلنا موجودة:

  • + للجمع
  • - للطرح
  • * للضرب
  • / للقسمة
  • % لباقي القسمة (Modulo)

مثلاً، لو عندك جدول منتجات Products فيه سعر المنتج Price وكمية Quantity، وتبغى تحسب الإجمالي لكل منتج:

SELECT
    ProductName,
    Price,
    Quantity,
    Price * Quantity AS TotalValue
FROM
    Products;

شوف كيف استخدمنا AS TotalValue عشان نعطي اسم حلو للعمود الجديد اللي طلعناه.

ملاحظة: انتبه لترتيب العمليات الحسابية (أقواس، ضرب وقسمة قبل الجمع والطرح) زي الرياضيات العادية بالضبط.

2. الدوال التجميعية (Aggregate Functions)

هذي الدوال رهيبة لأنها تشتغل على مجموعة من الصفوف وترجع لك قيمة واحدة. يعني ما تشتغل على كل صف لحاله، بل تجمع لك البيانات. أشهرها:

  • COUNT(): تحسب عدد الصفوف.
  • SUM(): تجمع قيم عمود معين.
  • AVG(): تحسب متوسط قيم عمود معين.
  • MIN(): ترجع أقل قيمة في عمود معين.
  • MAX(): ترجع أعلى قيمة في عمود معين.

COUNT()

تبغى تعرف كم منتج عندك؟

SELECT COUNT(*) AS TotalProducts FROM Products;

أو كم عميل (بدون تكرار)؟

SELECT COUNT(DISTINCT CustomerID) AS UniqueCustomers FROM Orders;

SUM() و AVG()

لو تبغى مجموع كل المبيعات ومتوسط سعر المنتج:

SELECT
    SUM(OrderTotal) AS GrandTotalSales,
    AVG(Price) AS AverageProductPrice
FROM
    Orders;

MIN() و MAX()

أقل وأعلى سعر منتج:

SELECT
    MIN(Price) AS LowestPrice,
    MAX(Price) AS HighestPrice
FROM
    Products;

3. استخدام GROUP BY مع الدوال التجميعية

هنا يجي الشغل الثقيل! لو تبغى تحسب دوال تجميعية لكل مجموعة من البيانات، تستخدم GROUP BY. مثلاً، تبغى تعرف مجموع المبيعات لكل عميل لحاله:

SELECT
    CustomerID,
    SUM(OrderTotal) AS TotalSpent
FROM
    Orders
GROUP BY
    CustomerID;

شوف كيف قسمنا البيانات حسب CustomerID، وبعدين حسبنا SUM(OrderTotal) لكل عميل على حدة.

4. تصفية المجموعات باستخدام HAVING

إذا كنت تبغى تصفي النتائج بعد ما تسوي التجميع (يعني بعد GROUP BY)، ما تقدر تستخدم WHERE. هنا يجي دور HAVING.

مثلاً، نبغى العملاء اللي مجموع مشترياتهم أكثر من 1000 ريال:

SELECT
    CustomerID,
    SUM(OrderTotal) AS TotalSpent
FROM
    Orders
GROUP BY
    CustomerID
HAVING
    SUM(OrderTotal) > 1000;

فرق مهم: WHERE تصفي الصفوف قبل التجميع، بينما HAVING تصفي المجموعات بعد التجميع.

خلاصة

كذا نكون غطينا أساسيات استخدام التعابير الرياضية والدوال التجميعية في SQL. الموضوع بسيط جداً وراح يفتح لك أبواب كثيرة لتحليل بياناتك واستخلاص معلومات قيمة منها. تدرب عليها وشوف كيف بتفرق معاك!