شرح صفوف ومحتوى الفقرة
داخل قوسي جملة OVER (...)، يمكنك التحكم في تقسيم النافذة وترتيب صفوفها عبر عبارتين رئيسيتين:
- التقسيم بـ
PARTITION BY: يقسم الصفوف إلى مجموعات فرعية مستقلة (مثل كل قسم أو كل عميل على حدة) بحيث تبدأ حسابات النافذة من جديد عند حدود كل مجموعة دون دمج الصفوف. - الترتيب الداخلي بـ
ORDER BY: يحدد تسلسل الصفوف داخل كل قسم؛ وعند إضافةORDER BYداخل دالة مثلSUM(...) OVER (PARTITION BY ... ORDER BY ...)يتحول المجموع تلقائياً إلى مجموع تراكمي جاري (Running Total) من أول صف في القسم حتى الصف الحالي.
SQL
-- Compute per-customer running cumulative spend across order dates
SELECT
user_id,
order_id,
order_date,
total_amount,
SUM(total_amount) OVER (
PARTITION BY user_id
ORDER BY order_date, order_id
) AS running_customer_spend
FROM orders;