خانه/ تجمیع داده‌ها/ SUM

SUM: جمع مقادیر عددی

مبتدی ۱۰ دقیقه مطالعه

SUM مقادیر عددی یک ستون را در همه‌ی ردیف‌های منطبق با هم جمع می‌زند. همچنان روی همان جدول sales درس قبل کار می‌کنیم.

ساختار پایه

sql
SELECT SUM(price) AS TotalPrice
FROM sales;

SUM با عبارت محاسباتی — محاسبه‌ی درآمد واقعی

SUM فقط روی یک ستون خام محدود نیست؛ می‌تواند روی هر عبارت محاسباتی هم اعمال شود. برای مثال، درآمد واقعی هر ردیف برابر است با قیمت ضرب‌در تعداد:

sql
SELECT SUM(price * quantity) AS TotalRevenue
FROM sales;

بیا این را امتحان کنیم:

امتحانش کن — محاسبه‌ی درآمد کل
دقت کن ردیف «کتاب تاریخ» که quantityاش NULL بود، به‌طور خودکار از محاسبه‌ی TotalRevenue کنار گذاشته شده — چون price * NULL خودش NULL می‌شود، و SUM مقادیر NULL را نادیده می‌گیرد.

نکته‌ی مهم: SUM روی مجموعه‌ی خالی، NULL برمی‌گرداند — نه صفر!

یک اشتباه رایج این است که فکر کنیم اگر هیچ ردیفی پیدا نشود، SUM عدد ۰ برمی‌گرداند. اما این‌طور نیست:

sql
SELECT SUM(quantity) AS Total
FROM sales
WHERE category = N'یک دسته‌ای که اصلاً وجود ندارد';
-- نتیجه: NULL، نه 0

بیا با چشم خودت ببینی:

امتحانش کن — SUM روی نتیجه‌ی خالی

جایگزین کردن نتیجه‌ی NULL با صفر

اگر در گزارش‌هایت ترجیح می‌دهی به‌جای NULL عدد ۰ ببینی (چیزی که معمولاً برای گزارش‌های مالی منطقی‌تر است)، از همان COALESCE که در درس NULL دیدیم استفاده کن:

sql
SELECT COALESCE(SUM(quantity), 0) AS Total
FROM sales
WHERE category = N'دسته‌ای که وجود ندارد';
-- نتیجه: 0

SUM با WHERE

sql
SELECT SUM(price * quantity) AS BookRevenue
FROM sales
WHERE category = N'کتاب';

جمع‌بندی این درس

  • SUM(column) مقادیر عددی را جمع می‌زند و NULLها را نادیده می‌گیرد.
  • SUM می‌تواند روی یک عبارت محاسباتی (مثل price * quantity) هم اعمال شود.
  • اگر هیچ ردیفی پیدا نشود، SUM مقدار NULL برمی‌گرداند، نه 0.
  • COALESCE(SUM(...), 0) راه استاندارد نمایش صفر به‌جای NULL است.

در درس بعدی سراغ AVG می‌رویم — و می‌بینیم چرا میانگین‌گیری وقتی NULL در کار باشد، می‌تواند غافلگیرکننده باشد.