sql >> Databáze >  >> RDS >> Sqlserver

Funkce SUM() na serveru SQL Server

V SQL Server, SUM() agregační funkce vrátí součet daného výrazu.

Lze jej také použít k vrácení součtu všech odlišných (jedinečných) hodnot ve výrazu.

SUM() funguje pouze na číselných sloupcích. Hodnoty Null jsou ignorovány.

Syntaxe

Syntaxe vypadá takto:

SUM ( [ ALL | DISTINCT ] expression ) 

Může být také použit s OVER klauzule:

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

Příklad

Předpokládejme, že máme tabulku nazvanou Products s následujícími údaji:

SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Výsledek:

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

K získání součtu všech cen můžeme použít následující dotaz.

SELECT SUM(ProductPrice)
FROM Products;

Výsledek:

367.20

Zde jsou informace o ceně uloženy v ProductPrice a tak to předáme jako argument do SUM() funkce, která pak vypočítá součet a vrátí výsledek.

Nulové hodnoty

SUM() funkce ignoruje při výpočtu hodnoty null.

Pokud sloupec obsahuje hodnoty null, může se zobrazit upozornění, že hodnoty null byly odstraněny.

Zde je například varování, které jsem dostal při spuštění výše uvedeného příkladu:

SELECT SUM(ProductPrice)
FROM Products;

Výsledek:

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

Filtrované výsledky

SUM() funkce pracuje na řádcích vrácených dotazem. Pokud tedy filtrujete výsledky, výsledek SUM() to bude odrážet.

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

Výsledek:

78.72

V tomto případě je 78,72 součet všech produktů nabízených zadaným prodejcem.

DISTINCT Klíčové slovo

Můžete použít DISTINCT klíčové slovo s SUM() vypočítat pouze odlišné hodnoty. To znamená, že pokud existují nějaké duplicitní hodnoty, jsou považovány za jednu hodnotu.

Příklad:

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

Výsledek:

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

Náš stůl obsahuje dvě položky se stejnou cenou (levý šroubovák a šroubovák pro pravé ruce jsou za cenu 25,99). DISTINCT Výsledkem klíčového slova je, že obě tyto hodnoty budou považovány za jednu.

Funkce okna

SUM() funkci lze použít s OVER klauzule k vytvoření funkce okna. Viz SQL SUM() příklad pro začátečníky.


  1. Oracle10g SQL pivot

  2. MAX() – Najděte maximální hodnotu ve sloupci v MySQL

  3. Jak nainstalovat SQL * PLUS klienta v linuxu

  4. Proces aktualizace krok za krokem pro aktualizaci R12.2, část -1