sql >> Databáze >  >> RDS >> MariaDB

Funkce AVG() v MariaDB

V MariaDB, AVG() funkce vrací průměrnou hodnotu daného výrazu.

DISTINCT možnost může být použita k vrácení průměru odlišných hodnot (tj. odstranění duplikátů před výpočtem průměru).

NULL hodnoty jsou ignorovány.

Ukázková data

Předpokládejme, že máme tabulku 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                   |        33.49 |
|     1003 | Chainsaw                        |       245.00 |
|     1003 | Straw Dog Box                   |        55.99 |
|     1004 | Bottomless Coffee Mugs (4 Pack) |         9.99 |
+----------+---------------------------------+--------------+

Příklad

K získání průměru všech cen můžeme použít následující dotaz.

SELECT AVG(ProductPrice)
FROM Products;

Výsledek:

52.898750

V tomto případě jsou informace o ceně uloženy v ProductPrice a tak jsme to předali jako argument do AVG() funkce, která pak vypočítala průměr a vrátila výsledek.

Filtrované výsledky

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

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

Výsledek:

19.680000

V tomto případě je 19,680000 průměrná cena všech produktů nabízených uvedeným prodejcem.

DISTINCT Klíčové slovo

Můžete použít DISTINCT klíčové slovo s AVG() 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 
    AVG(ProductPrice) AS "All",
    AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;

Výsledek:

+-----------+-----------+
| All       | Distinct  |
+-----------+-----------+
| 52.898750 | 56.742857 |
+-----------+-----------+

V tomto případě mají dvě položky stejnou cenu (levostranný šroubovák a pravostranný šroubovák mají oba cenu 25,99). Proto AVG() při použití s ​​funkcí DISTINCT klíčové slovo, považuje obě tyto hodnoty za jednu a podle toho vypočítá svůj výsledek.

Funkce okna

AVG() funkci lze použít ve funkcích okna. Viz SQL AVG() pro začátečníky jako příklad.


  1. Zachycování chyb propojeného serveru

  2. ORA-03135 – RMAN Duplikát

  3. Jak získat další hodnotu sekvence SQL Server v Entity Framework?

  4. Zabezpečení databáze – šifrování záloh během přepravy a v klidu