Təsəvvür elə... Səndə supermarketdən alınan uzun bir alış-veriş siyahısı var. Sonda nə qədər pul xərclədiyini hesablamaq istəyirsən. Əl ilə toplamayacaqsan axı, düzdür? Satıcıların isə hər şey artıq bazada saxlanılır. Ona görə də sən düzgün məbləğlə nəticə çekini alırsan. Yəqin ki, onların tətbiqində bu işdə bugünkü leksiyamızın qəhrəmanı — SUM() funksiyası kömək edir! Bu, ədədi tipli sütundakı dəyərləri toplamağa imkan verən aqreqat funksiyadır.
SUM() sintaksisi
SUM() funksiyası adı kimi sadə görünür, amma gəlin hər hissəsini ayrıca anlayaq:
SELECT SUM(sutun)
FROM cedvel;
Funksiya göstərilən sütundakı bütün dəyərləri götürüb cəmləyir. Amma düzünü deyək: burada heç bir mətn və ya tarix toplaması olmayacaq! Yalnız ədədlər.
SUM() istifadəsinə nümunələr
Gəlin sadə bir nümunədən başlayaq. Biz salaries adlı cədvəllə işləyəcəyik, burada işçilərin maaşları saxlanılır:
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | 55000 |
| 4 | 75000 |
Nümunə 1: Bütün maaşların cəmlənməsi
Şirkətin ümumi maaş fondunu bilmək istəyirsən. Bunu belə edirsən:
SELECT SUM(salary) AS total_salary
FROM salaries;
Nəticə:
| total_salary |
|---|
| 240000 |
Burada nə baş verdi? PostgreSQL salary sütunundakı bütün dəyərləri (50000 + 60000 + 55000 + 75000) topladı və nəticəni total_salary adlı yeni sütunda qaytardı.
Nümunə 2: Şərtlə cəmləmə
Tutaq ki, yalnız 55,000-dən çox maaş alan işçilərin ümumi maaşını bilmək istəyirsən. Sevimli WHERE operatorumuzu xatırlayaq:
SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;
Nəticə:
| high_salary_total |
|---|
| 135000 |
Burada nə baş verdi? Əvvəlcə PostgreSQL WHERE salary > 55000 filtrini tətbiq etdi, yalnız 60000 və 75000 maaşlı sətrləri saxladı. Sonra bu iki maaşı topladı (60000 + 75000).
3. SUM() funksiyasının xüsusiyyətləri
NULL SUM()-a necə təsir edir? Artıq gördüyümüz kimi, NULL — "heç nə" deməkdir və SUM() onu hesablara qatmir. Baxaq cədvələ:
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | NULL |
| 4 | 75000 |
Əgər ümumi maaş fondunu bilmək istəsək:
SELECT SUM(salary) AS total_salary
FROM salaries;
Nəticə:
| total_salary |
|---|
| 185000 |
Niyə "185000", "NULL" yox? PostgreSQL sadəcə NULL-u toplama zamanı saymır.
SUM() ilə mürəkkəb sorğulara nümunələr
Nümunə 1: Bir sorğuda cəmləmə və filtrasiya
Təsəvvür elə sales adlı cədvəlin var, burada satış məlumatları saxlanılır. Onun strukturu belədir:
| product_id | amount |
|---|---|
| 1 | 150 |
| 2 | 200 |
| 3 | NULL |
| 1 | 100 |
Yalnız birinci məhsul üçün (product_id = 1) amount satışlarının ümumi məbləğini bilmək istəyirsən:
SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;
Nəticə:
| total_sales |
|---|
| 150 |
Nümunə 2: Cəm və əlavə hesablamalar
Yenə salaries cədvəli ilə işləyirik. Maaş fondu 200,000-dən nə qədər artıqdır, bilmək istəyirsən:
SELECT SUM(salary) - 200000 AS surplus
FROM salaries;
Nəticə:
| surplus |
|---|
| 40000 |
SUM() istifadə edərkən tipik səhvlər
SUM() funksiyasını ədədi olmayan məlumatlar üçün istifadə etmək: təsadüfən, məsələn, mətn dəyərlərini toplamağa çalışsan, səhv alacaqsan. Sütundakı məlumat tiplərini yoxlamağı unutma.
NULL-u nəzərə almamaq: çox vaxt yeni başlayanlar NULL-u unudurlar və elə bilirlər ki, o da hesablara qatılır. Bu isə gözlənilməz nəticələrə səbəb ola bilər.
GO TO FULL VERSION