Функцията SQL Sum() е агрегатна функция в SQL, която връща общите стойности на израз. Изразът може да е числов или може да е израз.
Синтаксис:
SELECT SUM(columnname) FROM table_name WHERE conditions; Помислете за съществуващите таблици, които имат следните записи:
Таблица:Служители
| ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
| 1001 | VAIBHAVI | МИШРА | 65500 | ПУНА | ORACLE | 1 |
| 1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
| 1003 | НИХИЛ | VANI | 50500 | ДЖАЙПУР | FMW | 2 |
| 2001 | PRACHI | ШАРМА | 55500 | ЧАНДИГАР | ORACLE | 1 |
| 2002 | BHAVESH | ДЖЕЙН | 65500 | ПУНА | FMW | 2 |
| 2003 | РУЧИКА | ДЖЕЙН | 50 000 | МУМБАЙ | C# | 5 |
| 3001 | PRANOTI | ШЕНДЕ | 55500 | ПУНА | JAVA | 3 |
| 3002 | ANUJA | WANRE | 50500 | ДЖАЙПУР | FMW | 2 |
| 3003 | DEEPAM | ДЖАУХАРИ | 58500 | МУМБАЙ | JAVA | 3 |
| 4001 | РАДЖЕШ | GOUD | 60500 | МУМБАЙ | ТЕСТВАНЕ | 4 |
| 4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
| 4003 | РУЧИКА | AGARWAL | 60 000 | ДЕЛХИ | ORACLE | 1 |
| 5001 | АРХИТ | ШАРМА | 55500 | ДЕЛХИ | ТЕСТВАНЕ | 4 |
Пример 1: Напишете заявка, която сумира общата заплата на служителите от таблицата на служителите.
SELECT SUM (SALARY) AS 'SALARY' FROM EMPLOYEES; Изразът Sum ще покаже сумата от общата заплата. s
Изход:
| ЗАПЛАТА |
| 742000 |
Пример 2: Напишете заявка за сумиране на заплатата на служителите, чийто град е Пуна, от таблицата на служителите.
SELECT CITY, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE CITY = 'PUNE'; Тази заявка ще направи сума от заплатата на служителите, чийто град е Пуна.
Изход:
| ГРАД | ЗАПЛАТА |
| ПУНА | 186500 |
Пример 3: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите на служителите, чийто отдел е Oracle.
SELECT DEPARTMENT, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT = 'ORACLE'; Изход:
| ОТДЕЛ | ЗАПЛАТА |
| ORACLE | 181000 |
Пример 4: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите, чийто отдел включва oracle и FMW.
SELECT SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW'); Изход:
| ЗАПЛАТА |
| 347500 |
Пример 4: Напишете заявка за сумирана заплата на служителите от таблицата на служителите, чиято заплата е по-голяма от 50 000 и градът включва Пуна и Мумбай.
SELECT CITY, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 AND CITY IN ('PUNE', 'MUMBAI') GROUP BY CITY; Изход :
| ГРАД | РАБОТА_ЗАПЛАТА |
| ПУНА | 119 000 |
| МУМБАЙ | 186500 |
Пример 5: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите, чиято заплата е по-голяма от 50 000 или градът включва Oracle, FMW и група от отдела.
SELECT DEPARTMENT, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 OR DEPARTMENT IN ('ORACLE', 'FMW') GROUP BY DEPARTMENT; Изход:
| ОТДЕЛ | РАБОТА_ЗАПЛАТА |
| C# | 60 000 |
| FMW | 166500 |
| JAVA | 168500 |
| ORACLE | 181000 |
| ТЕСТВАНЕ | 116 000 |
Пример 6: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите, като използвате уникални градове на служителите и група по град.
SELECT CITY, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY; Изход:
| ГРАД | РАБОТА_ЗАПЛАТА |
| ЧАНДИГАРХ | 55500 |
| ДЕЛХИ | 115500 |
| ДЖАЙПУР | 50500 |
| МУМБАЙ | 169 000 |
| NOIDA | 114500 |
| ПУНА | 121 000 |
Пример 7: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите, които имат уникален отдел и група по отдел.
SELECT DEPARTMENT, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT; Изход:
| ОТДЕЛ | РАБОТА_ЗАПЛАТА |
| C# | 110 000 |
| FMW | 116 000 |
| JAVA | 168500 |
| ORACLE | 181000 |
| ТЕСТВАНЕ | 116 000 |
Пример 8: Напишете заявка за сумиране на заплатата на служителите от таблицата на служителите и групата по град, отдел.
SELECT CITY, DEPARTMENT, SUM(SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY, DEPARTMENT; Изход:
| ГРАД | ОТДЕЛ | РАБОТА_ЗАПЛАТА |
| ЧАНДИГАРХ | ORACLE | 55500 |
| ДЕЛХИ | ORACLE | 60 000 |
| ДЕЛХИ | ТЕСТВАНЕ | 55500 |
| ДЖАЙПУР | FMW | 101 000 |
| МУМБАЙ | C# | 50 000 |
| МУМБАЙ | JAVA | 58500 |
| МУМБАЙ | ТЕСТВАНЕ | 60500 |
| NOIDA | C# | 60 000 |
| NOIDA | JAVA | 54500 |
| ПУНА | FMW | 65500 |
| ПУНА | JAVA | 55500 |
| ПУНА | ORACLE | 65500 |
Пример 9: Напишете заявка за сумиране на заплатата на служителите от групата таблица на служителите по града, в който общата заплата е по-голяма от 75 000.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY HAVING SUM(SALARY) > 75000; Изход:
| ГРАД | ЗАПЛАТА |
| ДЕЛХИ | 115500 |
| ДЖАЙПУР | 101 000 |
| МУМБАЙ | 169 000 |
| NOIDA | 114500 |
| ПУНА | 186500 |
Както виждаме, има само градове, чиято обща заплата е по-голяма от 75 000.
Пример 10: Напишете заявка за сумиране на заплатата на служител с лаптоп и групиране от отдела.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT; Изход:
| ОТДЕЛ | ЗАПЛАТА |
| C# | 60 000 |
| JAVA | 113 000 |
| ORACLE | 60 000 |
| ТЕСТВАНЕ | 55500 |
Пример 11: Напишете заявка за сумиране на заплатата на служителите с лаптоп и група по отдела, където общата заплата е по-голяма от 58 000.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT HAVING SUM(SALARY) > 58000; Изход:
| ОТДЕЛ | ЗАПЛАТА |
| C# | 60 000 |
| JAVA | 113 000 |
| ORACLE | 60 000 |