W MariaDB funkcja AVG()
funkcja zwraca średnią wartość podanego wyrażenia.
DISTINCT
opcja może być użyta do zwrócenia średniej z odrębnych wartości (tj. Usuń duplikaty przed obliczeniem średniej).
NULL
wartości są ignorowane.
Przykładowe dane
Załóżmy, że mamy tabelę z następującymi danymi:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Wynik:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Przykład
Możemy użyć następującego zapytania, aby uzyskać średnią wszystkich cen.
SELECT AVG(ProductPrice)
FROM Products;
Wynik:
52.898750
W takim przypadku informacje o cenie są przechowywane w ProductPrice
kolumna, więc przekazaliśmy to jako argument do AVG()
funkcja, która następnie obliczyła średnią i zwróciła wynik.
Przefiltrowane wyniki
AVG()
funkcja działa na wierszach zwróconych przez zapytanie. Więc jeśli filtrujesz wyniki, wynik AVG()
odzwierciedli to.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Wynik:
19.680000
W tym przypadku 19.680000 to średnia cena wszystkich produktów oferowanych przez określonego dostawcę.
DISTINCT
Słowo kluczowe
Możesz użyć DISTINCT
słowo kluczowe z AVG()
aby obliczyć tylko różne wartości. Oznacza to, że jeśli istnieją jakiekolwiek zduplikowane wartości, są one traktowane jako jedna wartość.
Przykład:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Wynik:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
W tym przypadku dwa produkty mają tę samą cenę (wkrętak lewy i śrubokręt praworęczny mają cenę 25,99). Dlatego AVG()
funkcja, gdy jest używana z DISTINCT
słowo kluczowe, traktuje obie te wartości jako jedną i odpowiednio oblicza wynik.
Funkcje okien
AVG()
funkcja może być używana w funkcjach okien. Zobacz SQL AVG()
dla początkujących na przykład tego.