sql >> Databasteknik >  >> RDS >> Sqlserver

SUM() Funktion i SQL Server

I SQL Server, SUM() aggregerad funktion returnerar summan av ett givet uttryck.

Den kan också användas för att returnera summan av alla distinkta (unika) värden i uttrycket.

SUM() fungerar bara på numeriska kolumner. Nullvärden ignoreras.

Syntax

Syntaxen ser ut så här:

SUM ( [ ALL | DISTINCT ] expression ) 

Den kan också användas med en OVER klausul:

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

Exempel

Anta att vi har en tabell som heter Products med följande data:

SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Resultat:

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

Vi kan använda följande fråga för att få summan av alla priser.

SELECT SUM(ProductPrice)
FROM Products;

Resultat:

367.20

Här lagras prisinformation i ProductPrice kolumnen, och så skickar vi det som ett argument till SUM() funktion, som sedan beräknar summan och returnerar resultatet.

Nullvärden

SUM() funktionen ignorerar nollvärden när den utför sin beräkning.

Om kolumnen innehåller nollvärden kan du se en varning som indikerar att nollvärden har eliminerats.

Till exempel, här är varningen som jag fick när jag körde exemplet ovan:

SELECT SUM(ProductPrice)
FROM Products;

Resultat:

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

Filtrerade resultat

SUM() funktionen fungerar på raderna som returneras av frågan. Så om du filtrerar resultaten blir resultatet av SUM() kommer att återspegla det.

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

Resultat:

78.72

I det här fallet är 78,72 summan av alla produkter som erbjuds av den angivna leverantören.

DISTINCT Nyckelord

Du kan använda DISTINCT nyckelord med SUM() för att endast beräkna distinkta värden. Det vill säga, om det finns några dubbletter av värden, behandlas de som ett värde.

Exempel:

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

Resultat:

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

Vårt bord innehåller två artiklar med samma pris (vänsterskruvmejseln och högerskruvmejseln kostar båda 25,99). DISTINCT sökord leder till att båda dessa värden behandlas som ett.

Fönsterfunktioner

SUM() funktionen kan användas med en OVER klausul för att skapa en fönsterfunktion. Se SQL SUM() för nybörjare som ett exempel.


  1. Skapa ett SQL Server Agent Job med T-SQL

  2. 3 sätt att returnera en sträng med flera utrymmen i SQL Server

  3. WHERE_IN fråga med en sammansatt nyckel?

  4. Interner i de sju SQL-serversorterna – Del 1