Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SUM() Funzione in SQL Server

In SQL Server, il SUM() la funzione aggregata restituisce la somma di una determinata espressione.

Può anche essere utilizzato per restituire la somma di tutti i valori distinti (unici) nell'espressione.

SUM() funziona solo su colonne numeriche. I valori nulli vengono ignorati.

Sintassi

La sintassi è questa:

SUM ( [ ALL | DISTINCT ] expression ) 

Può essere utilizzato anche con un OVER clausola:

SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)

Esempio

Supponiamo di avere una tabella chiamata Products con i seguenti dati:

SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Risultato:

+------------+---------------------------------+----------------+
| 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          |
+------------+---------------------------------+----------------+

Possiamo utilizzare la seguente query per ottenere la somma di tutti i prezzi.

SELECT SUM(ProductPrice)
FROM Products;

Risultato:

367.20

Qui, le informazioni sui prezzi sono memorizzate nel ProductPrice colonna, e quindi lo passiamo come argomento a SUM() funzione, che quindi calcola la somma e restituisce il risultato.

Valori Nulli

Il SUM() la funzione ignora i valori null durante l'esecuzione del calcolo.

Se la colonna contiene valori Null, potresti visualizzare un avviso che indica che i valori Null sono stati eliminati.

Ad esempio, ecco l'avviso che ho ricevuto durante l'esecuzione dell'esempio precedente:

SELECT SUM(ProductPrice)
FROM Products;

Risultato:

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

Risultati filtrati

Il SUM() La funzione opera sulle righe restituite dalla query. Quindi, se filtri i risultati, il risultato di SUM() lo rifletterà.

SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;

Risultato:

78.72

In questo caso, 78,72 è la somma di tutti i prodotti offerti dal venditore specificato.

Il DISTINCT Parola chiave

Puoi usare il DISTINCT parola chiave con SUM() calcolare solo valori distinti. Cioè, se sono presenti valori duplicati, vengono trattati come un valore.

Esempio:

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

Risultato:

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

La nostra tabella contiene due articoli con lo stesso prezzo (il cacciavite sinistro e il cacciavite destro hanno entrambi un prezzo di 25,99). Il DISTINCT la parola chiave fa sì che entrambi i valori vengano trattati come uno.

Funzioni della finestra

Il SUM() la funzione può essere utilizzata con un OVER clausola per creare una funzione finestra. Vedi SQL SUM() per i principianti per un esempio.