Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Função SUM() no SQL Server


No SQL Server, o SUM() A função agregada retorna a soma de uma determinada expressão.

Ele também pode ser usado para retornar a soma de todos os valores distintos (exclusivos) na expressão.

SUM() só funciona em colunas numéricas. Os valores nulos são ignorados.

Sintaxe


A sintaxe fica assim:
SUM ( [ ALL | DISTINCT ] expression ) 

Também pode ser usado com um OVER cláusula:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)

Exemplo


Suponha que tenhamos uma tabela chamada Products com os seguintes dados:
SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Resultado:
+------------+---------------------------------+----------------+
| VendorId   | ProductName                     | ProductPrice   |
|------------+---------------------------------+----------------|
| 1001       | Left handed screwdriver         | 25.99          |
| 1001       | Long Weight (blue)              | 14.75          |
| 1001       | Long Weight (green)             | 11.99          |
| 1002       | Sledge Hammer                   | 33.49          |
| 1003       | Chainsaw                        | 245.00         |
| 1003       | Straw Dog Box                   | NULL           |
| 1004       | Bottomless Coffee Mugs (4 Pack) | 9.99           |
| 1001       | Right handed screwdriver        | 25.99          |
+------------+---------------------------------+----------------+

Podemos usar a seguinte consulta para obter a soma de todos os preços.
SELECT SUM(ProductPrice)
FROM Products;

Resultado:
367.20

Aqui, as informações de preço são armazenadas no ProductPrice coluna, e então passamos isso como um argumento para o SUM() função, que então calcula a soma e retorna o resultado.

Valores nulos


A SUM() função ignora valores nulos ao realizar seu cálculo.

Se a coluna contiver valores nulos, você poderá ver um aviso indicando que os valores nulos foram eliminados.

Por exemplo, aqui está o aviso que recebi ao executar o exemplo acima:
SELECT SUM(ProductPrice)
FROM Products;

Resultado:
+--------------------+
| (No column name)   |
|--------------------|
| 367.20             |
+--------------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

Resultados filtrados


A SUM() A função opera nas linhas retornadas pela consulta. Então, se você filtrar os resultados, o resultado de SUM() vai refletir isso.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;

Resultado:
78.72

Nesse caso, 78,72 é a soma de todos os produtos oferecidos pelo fornecedor especificado.

O DISTINCT Palavra-chave


Você pode usar o DISTINCT palavra-chave com SUM() para calcular apenas valores distintos. Ou seja, se houver valores duplicados, eles serão tratados como um valor.

Exemplo:
SELECT 
    SUM(ALL ProductPrice) AS "All",
    SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;

Resultado:
+--------+------------+
| All    | Distinct   |
|--------+------------|
| 367.20 | 341.21     |
+--------+------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

Nossa tabela contém dois itens com o mesmo preço (a chave de fenda para canhotos e a chave de fenda para destros custam 25,99). O DISTINCT palavra-chave resulta em ambos os valores sendo tratados como um.

Funções da janela


A SUM() função pode ser usada com um OVER cláusula para criar uma função de janela. Veja SQL SUM() para Iniciantes para um exemplo.