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.