sql >> Databáze >  >> RDS >> Mysql

Funkce SUM() v MySQL

V MySQL je to SUM() agregační funkce vrací 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.

Syntaxe

Syntaxe vypadá takto:

SUM([DISTINCT] expr) [over_clause]

Ukázková data

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 | Right handed screwdriver        |        25.99 |
|     1001 | Long Weight (blue)              |        14.75 |
|     1001 | Long Weight (green)             |        11.99 |
|     1002 | Sledge Hammer                   |         NULL |
|     1003 | Chainsaw                        |       245.00 |
|     1003 | Straw Dog Box                   |        55.99 |
|     1004 | Bottomless Coffee Mugs (4 Pack) |         9.99 |
+----------+---------------------------------+--------------+

Příklad

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

SELECT SUM(ProductPrice)
FROM Products;

Výsledek:

389.70

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 všechny hodnoty NULL. V naší vzorové tabulce výše má perlík ve své ProductPrice hodnotu NULL sloupec, ale to bylo ve výpočtu ignorováno.

Filtrované výsledky

SUM() funkce pracuje na řádcích vrácených dotazem. Pokud tedy filtrujete výsledky, výstup 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(DISTINCT ProductPrice)
FROM Products;

Výsledek:

363.71

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

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


  1. Jak mohu ignorovat ampersandy ve skriptu SQL spuštěném z SQL Plus?

  2. Proč je Oracle tak pomalý, když předávám java.sql.Timestamp pro sloupec DATE?

  3. Vývojářský nástroj Oracle SQL:Stažení a instalace

  4. Nesprávné řazení/kompletace/pořadí s mezerami v Postgresql 9.4