sql >> Database >  >> RDS >> Sqlserver

SUM() Functie in SQL Server

In SQL Server is de SUM() aggregatiefunctie retourneert de som van een bepaalde uitdrukking.

Het kan ook worden gebruikt om de som van alle afzonderlijke (unieke) waarden in de uitdrukking te retourneren.

SUM() werkt alleen op numerieke kolommen. Null-waarden worden genegeerd.

Syntaxis

De syntaxis gaat als volgt:

SUM ( [ ALL | DISTINCT ] expression ) 

Het kan ook worden gebruikt met een OVER clausule:

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

Voorbeeld

Stel dat we een tabel hebben met de naam Products met de volgende gegevens:

SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Resultaat:

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

We kunnen de volgende zoekopdracht gebruiken om de som van alle prijzen te krijgen.

SELECT SUM(ProductPrice)
FROM Products;

Resultaat:

367.20

Hier wordt prijsinformatie opgeslagen in de ProductPrice kolom, en dus geven we dat door als argument aan de SUM() functie, die vervolgens de som berekent en het resultaat retourneert.

Null-waarden

De SUM() functie negeert null-waarden bij het uitvoeren van de berekening.

Als de kolom null-waarden bevat, ziet u mogelijk een waarschuwing die aangeeft dat null-waarden zijn verwijderd.

Hier is bijvoorbeeld de waarschuwing die ik kreeg bij het uitvoeren van het bovenstaande voorbeeld:

SELECT SUM(ProductPrice)
FROM Products;

Resultaat:

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

Gefilterde resultaten

De SUM() functie werkt op de rijen die door de query worden geretourneerd. Dus als u de resultaten filtert, wordt het resultaat van SUM() zal dat weerspiegelen.

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

Resultaat:

78.72

In dit geval is 78,72 de som van alle producten die door de opgegeven leverancier worden aangeboden.

De DISTINCT Zoekwoord

U kunt de DISTINCT . gebruiken zoekwoord met SUM() om alleen verschillende waarden te berekenen. Dat wil zeggen, als er dubbele waarden zijn, worden deze als één waarde behandeld.

Voorbeeld:

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

Resultaat:

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

Onze tabel bevat twee artikelen met dezelfde prijs (de linkshandige schroevendraaier en de rechtshandige schroevendraaier kosten beide 25,99). De DISTINCT trefwoord resulteert erin dat beide waarden als één worden behandeld.

Vensterfuncties

De SUM() functie kan worden gebruikt met een OVER clausule om een ​​vensterfunctie te creëren. Zie SQL SUM() voor beginners bijvoorbeeld.


  1. ORA-28000:het account is vergrendeld, fout wordt vaak weergegeven

  2. Hoe bewaar je meerdere opties in één tabel?

  3. ORA-12505, TNS:luisteraar kent momenteel geen SID gegeven in connect descriptor

  4. Hoe formatteer ik mijn orakel-query's zodat de kolommen niet overlopen?