SUM: جمع مقادیر عددی
SUM مقادیر عددی یک ستون را در همهی ردیفهای منطبق با هم جمع میزند. همچنان روی همان جدول sales درس قبل کار میکنیم.
ساختار پایه
SELECT SUM(price) AS TotalPrice FROM sales;
SUM با عبارت محاسباتی — محاسبهی درآمد واقعی
SUM فقط روی یک ستون خام محدود نیست؛ میتواند روی هر عبارت محاسباتی هم اعمال شود. برای مثال، درآمد واقعی هر ردیف برابر است با قیمت ضربدر تعداد:
SELECT SUM(price * quantity) AS TotalRevenue FROM sales;
بیا این را امتحان کنیم:
quantityاش NULL بود، بهطور خودکار از محاسبهی TotalRevenue کنار گذاشته شده — چون price * NULL خودش NULL میشود، و SUM مقادیر NULL را نادیده میگیرد.نکتهی مهم: SUM روی مجموعهی خالی، NULL برمیگرداند — نه صفر!
یک اشتباه رایج این است که فکر کنیم اگر هیچ ردیفی پیدا نشود، SUM عدد ۰ برمیگرداند. اما اینطور نیست:
SELECT SUM(quantity) AS Total FROM sales WHERE category = N'یک دستهای که اصلاً وجود ندارد'; -- نتیجه: NULL، نه 0
بیا با چشم خودت ببینی:
جایگزین کردن نتیجهی NULL با صفر
اگر در گزارشهایت ترجیح میدهی بهجای NULL عدد ۰ ببینی (چیزی که معمولاً برای گزارشهای مالی منطقیتر است)، از همان COALESCE که در درس NULL دیدیم استفاده کن:
SELECT COALESCE(SUM(quantity), 0) AS Total FROM sales WHERE category = N'دستهای که وجود ندارد'; -- نتیجه: 0
SUM با WHERE
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 در کار باشد، میتواند غافلگیرکننده باشد.
تمرینهای خودآزمایی
اول خودت جواب بده، بعد پاسخ را باز کن و مقایسه کن.
۱مجموع نمرههای دانشآموز شمارهی ۱ را بنویس.نمایش پاسخ
SELECT SUM(score) FROM enrollments WHERE student_id = 1;
۲اگر همهی مقادیر یک ستون NULL باشند، SUM چه برمیگرداند؟نمایش پاسخ
NULL (نه صفر). برای گرفتن صفر: COALESCE(SUM(score), 0).