A função SQL Sum() é uma função agregada em SQL que retorna os valores totais de uma expressão. A expressão pode ser numérica ou pode ser uma expressão.
Sintaxe:
SELECT SUM(columnname) FROM table_name WHERE conditions; Considere as tabelas existentes que possuem os seguintes registros:
Tabela:Funcionários
| EMPLOYEEID | FIRST_NAME | LAST_NAME | SALÁRIO | CIDADE | DEPARTAMENTO | GERENTE |
| 1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
| 1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
| 1003 | NIQUIL | VANI | 50500 | JAIPUR | FMW | 2 |
| 2001 | PRAQUI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
| 2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
| 2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
| 3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
| 3002 | ANUJA | QUERER | 50500 | JAIPUR | FMW | 2 |
| 3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
| 4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTE | 4 |
| 4002 | ASHWINI | BOLSA | 54500 | NOIDA | JAVA | 3 |
| 4003 | RUCHIKA | AGARWAL | 60.000 | DÉLHI | ORACLE | 1 |
| 5001 | ARQUIVO | SHARMA | 55500 | DÉLHI | TESTE | 4 |
Exemplo 1: Escreva uma consulta que some o salário total dos funcionários da tabela de funcionários.
SELECT SUM (SALARY) AS 'SALARY' FROM EMPLOYEES; A expressão Sum exibirá a soma do salário total. s
Saída:
| SALÁRIO |
| 742000 |
Exemplo 2: Escreva uma consulta para somar o salário dos funcionários cuja cidade é Pune da tabela dos funcionários.
SELECT CITY, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE CITY = 'PUNE'; Esta consulta fará uma soma do salário dos funcionários cuja cidade é Pune.
Saída:
| CIDADE | SALÁRIO |
| PUNE | 186500 |
Exemplo 3: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários cujo departamento é Oracle.
SELECT DEPARTMENT, SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT = 'ORACLE'; Saída:
| DEPARTAMENTO | SALÁRIO |
| ORACLE | 181000 |
Exemplo 4: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários cujo departamento inclui oracle e FMW.
SELECT SUM(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW'); Saída:
| SALÁRIO |
| 347500 |
Exemplo 4: Escreva uma consulta para o salário somado dos funcionários da tabela de funcionários cujo salário é maior que 50.000 e a cidade inclui Pune e Mumbai.
SELECT CITY, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 AND CITY IN ('PUNE', 'MUMBAI') GROUP BY CITY; Saída :
| CIDADE | SALÁRIO_FUNCIONÁRIO |
| PUNE | 119000 |
| MUMBAI | 186500 |
Exemplo 5: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários cujo salário seja maior que 50.000 ou cidade inclua Oracle, FMW e agrupe por departamento.
SELECT DEPARTMENT, SUM(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 50000 OR DEPARTMENT IN ('ORACLE', 'FMW') GROUP BY DEPARTMENT; Saída:
| DEPARTAMENTO | SALÁRIO_FUNCIONÁRIO |
| C# | 60.000 |
| FMW | 166500 |
| JAVA | 168500 |
| ORACLE | 181000 |
| TESTE | 116000 |
Exemplo 6: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários usando cidades exclusivas de funcionários e agrupe por cidade.
SELECT CITY, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY; Saída:
| CIDADE | SALÁRIO_FUNCIONÁRIO |
| CHANDIGARH | 55500 |
| DÉLHI | 115500 |
| JAIPUR | 50500 |
| MUMBAI | 169000 |
| NOIDA | 114500 |
| PUNE | 121000 |
Exemplo 7: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários que possuem departamento exclusivo e agrupe por departamento.
SELECT DEPARTMENT, SUM(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT; Saída:
| DEPARTAMENTO | SALÁRIO_FUNCIONÁRIO |
| C# | 110000 |
| FMW | 116000 |
| JAVA | 168500 |
| ORACLE | 181000 |
| TESTE | 116000 |
Exemplo 8: Escreva uma consulta para somar o salário dos funcionários da tabela de funcionários e agrupe por cidade, departamento.
SELECT CITY, DEPARTMENT, SUM(SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY CITY, DEPARTMENT; Saída:
| CIDADE | DEPARTAMENTO | SALÁRIO_FUNCIONÁRIO |
| CHANDIGARH | ORACLE | 55500 |
| DÉLHI | ORACLE | 60.000 |
| DÉLHI | TESTE | 55500 |
| JAIPUR | FMW | 101000 |
| MUMBAI | C# | 50.000 |
| MUMBAI | JAVA | 58500 |
| MUMBAI | TESTE | 60500 |
| NOIDA | C# | 60.000 |
| NOIDA | JAVA | 54500 |
| PUNE | FMW | 65500 |
| PUNE | JAVA | 55500 |
| PUNE | ORACLE | 65500 |
Exemplo 9: Escreva uma consulta para somar o salário dos funcionários do grupo da tabela de funcionários pela cidade onde o salário agregado é maior que 75.000.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY HAVING SUM(SALARY) > 75000; Saída:
| CIDADE | SALÁRIO |
| DÉLHI | 115500 |
| JAIPUR | 101000 |
| MUMBAI | 169000 |
| NOIDA | 114500 |
| PUNE | 186500 |
Como podemos ver, tem apenas cidades que o salário agregado é superior a 75.000.
Exemplo 10: Escreva uma consulta para somar o salário de um funcionário com um laptop e agrupe por departamento.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT; Saída:
| DEPARTAMENTO | SALÁRIO |
| C# | 60.000 |
| JAVA | 113000 |
| ORACLE | 60.000 |
| TESTE | 55500 |
Exemplo 11: Escreva uma consulta para somar o salário dos funcionários com o laptop e agrupe pelo departamento em que o salário agregado é maior que 58.000.
SELECT DEPARTMENT, SUM(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT HAVING SUM(SALARY) > 58000; Saída:
| DEPARTAMENTO | SALÁRIO |
| C# | 60.000 |
| JAVA | 113000 |
| ORACLE | 60.000 |