In MariaDB der AVG()
Die Funktion gibt den Durchschnittswert des angegebenen Ausdrucks zurück.
Der DISTINCT
kann verwendet werden, um den Durchschnitt der unterschiedlichen Werte zurückzugeben (d. h. Duplikate entfernen, bevor der Durchschnitt berechnet wird).
NULL
Werte werden ignoriert.
Beispieldaten
Angenommen, wir haben eine Tabelle mit den folgenden Daten:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Ergebnis:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Beispiel
Wir können die folgende Abfrage verwenden, um den Durchschnitt aller Preise zu erhalten.
SELECT AVG(ProductPrice)
FROM Products;
Ergebnis:
52.898750
In diesem Fall werden Preisinformationen im ProductPrice
gespeichert Spalte, und so haben wir das als Argument an AVG()
übergeben Funktion, die dann den Durchschnitt berechnet und das Ergebnis zurückgibt.
Gefilterte Ergebnisse
Der AVG()
Die Funktion arbeitet mit den von der Abfrage zurückgegebenen Zeilen. Wenn Sie also die Ergebnisse filtern, wird das Ergebnis von AVG()
angezeigt wird das widerspiegeln.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Ergebnis:
19.680000
In diesem Fall ist 19,680000 der Durchschnittspreis aller vom angegebenen Anbieter angebotenen Produkte.
Der DISTINCT
Schlüsselwort
Sie können den DISTINCT
verwenden Stichwort mit AVG()
nur unterschiedliche Werte zu berechnen. Das heißt, wenn doppelte Werte vorhanden sind, werden sie als ein Wert behandelt.
Beispiel:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Ergebnis:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
In diesem Fall teilen sich zwei Artikel den gleichen Preis (der Linkshänder-Schraubendreher und der Rechtshänder-Schraubendreher kosten beide 25,99). Daher der AVG()
Funktion, wenn sie mit DISTINCT
verwendet wird Schlüsselwort, behandelt beide Werte als einen und berechnet das Ergebnis entsprechend.
Fensterfunktionen
Der AVG()
Funktion kann in Fensterfunktionen verwendet werden. Siehe SQL AVG()
für Anfänger als Beispiel.