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 در کار باشد، میتواند غافلگیرکننده باشد.