La funzione SQL Sum() è una funzione aggregata in SQL che restituisce i valori totali di un'espressione. L'espressione può essere numerica o può essere un'espressione.
Sintassi:
SELECT SUM(columnname) FROM table_name WHERE conditions; Considera le tabelle esistenti che hanno i seguenti record:
Tabella:Dipendenti
| ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
| 1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
| 1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
| 1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
| 2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
| 2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
| 2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
| 3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
| 3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
| 3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
| 4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
| 4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
| 4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
| 5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Esempio 1: Scrivi una query che somma lo stipendio totale dei dipendenti dalla tabella dei dipendenti.
SELECT SUM (SALARY) AS 'SALARY' FROM EMPLOYEES; L'espressione Somma visualizzerà la somma dello stipendio totale. s
Risultato:
| STIPENDIO |
| 742000 |
Esempio 2: Scrivi una query per sommare lo stipendio dei dipendenti la cui città è Pune dalla tabella dei dipendenti.
SELECT CITY, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE CITY = 'PUNE'; Questa query farà una somma dello stipendio dei dipendenti la cui città è Pune.
Risultato:
| CITTÀ | STIPENDIO |
| PUNE | 186500 |
Esempio 3: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti il cui dipartimento è Oracle.
SELECT DEPARTMENT, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT = 'ORACLE'; Risultato:
| REPARTO | STIPENDIO |
| ORACLE | 181000 |
Esempio 4: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti il cui dipartimento include Oracle e FMW.
SELECT SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW'); Risultato:
| STIPENDIO |
| 347500 |
Esempio 4: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti il cui stipendio è superiore a 50000 e la città include Pune e Mumbai.
SELECT CITY, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 AND CITY IN ('PUNE', 'MUMBAI') GROUP BY CITY; Risultato :
| CITTÀ | DIPENDENTE_SALARIO |
| PUNE | 119000 |
| MUMBAI | 186500 |
Esempio 5: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti il cui stipendio è maggiore di 50000 o la città include Oracle, FMW e il gruppo per dipartimento.
SELECT DEPARTMENT, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 OR DEPARTMENT IN ('ORACLE', 'FMW') GROUP BY DEPARTMENT; Risultato:
| REPARTO | DIPENDENTE_SALARIO |
| C# | 60000 |
| FM | 166500 |
| JAVA | 168500 |
| ORACLE | 181000 |
| PROVA | 116000 |
Esempio 6: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti utilizzando città di dipendenti univoche e gruppo per città.
SELECT CITY, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY; Risultato:
| CITTÀ | DIPENDENTE_SALARIO |
| CHANDIGARH | 55500 |
| DELHI | 115500 |
| JAIPUR | 50500 |
| MUMBAI | 169000 |
| NOIDA | 114500 |
| PUNE | 121000 |
Esempio 7: Scrivi una query per sommare lo stipendio dei dipendenti dalla tabella dei dipendenti che hanno un dipartimento e un gruppo univoci per dipartimento.
SELECT DEPARTMENT, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT;
Risultato:
| REPARTO | DIPENDENTE_SALARIO |
| C# | 110000 |
| FM | 116000 |
| JAVA | 168500 |
| ORACLE | 181000 |
| PROVA | 116000 |
Esempio 8: Scrivi una query per sommare lo stipendio dei dipendenti dal tavolo dei dipendenti e dal gruppo per città, dipartimento.
SELECT CITY, DEPARTMENT, SUM(SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY, DEPARTMENT; Risultato:
| CITTÀ | REPARTO | DIPENDENTE_SALARIO |
| CHANDIGARH | ORACLE | 55500 |
| DELHI | ORACLE | 60000 |
| DELHI | PROVA | 55500 |
| JAIPUR | FM | 101000 |
| MUMBAI | C# | 50000 |
| MUMBAI | JAVA | 58500 |
| MUMBAI | PROVA | 60500 |
| NOIDA | C# | 60000 |
| NOIDA | JAVA | 54500 |
| PUNE | FM | 65500 |
| PUNE | JAVA | 55500 |
| PUNE | ORACLE | 65500 |
Esempio 9: Scrivi una query per sommare lo stipendio dei dipendenti dal gruppo di tavoli dei dipendenti per città in cui lo stipendio aggregato è maggiore di 75000.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY HAVING SUM(SALARY) > 75000; Risultato:
| CITTÀ | STIPENDIO |
| DELHI | 115500 |
| JAIPUR | 101000 |
| MUMBAI | 169000 |
| NOIDA | 114500 |
| PUNE | 186500 |
Come possiamo vedere, ha solo città in cui lo stipendio aggregato è maggiore di 75000.
Esempio 10: Scrivi una query per sommare lo stipendio di un dipendente con un laptop e raggruppalo in base al dipartimento.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT; Risultato:
| REPARTO | STIPENDIO |
| C# | 60000 |
| JAVA | 113000 |
| ORACLE | 60000 |
| PROVA | 55500 |
Esempio 11: Scrivi una query per sommare lo stipendio dei dipendenti con laptop e raggruppa per reparto in cui lo stipendio aggregato è maggiore di 58000.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT HAVING SUM(SALARY) > 58000; Risultato:
| REPARTO | STIPENDIO |
| C# | 60000 |
| JAVA | 113000 |
| ORACLE | 60000 |