Wenn Sie über avg()
Bescheid wissen Funktion in SQLite wissen Sie wahrscheinlich, dass sie den Durchschnitt aller Nicht-NULL X zurückgibt innerhalb einer Gruppe.
Aber wussten Sie, dass Sie den DISTINCT
hinzufügen können? Schlüsselwort zu dieser Funktion?
Wenn Sie den DISTINCT
hinzufügen Schlüsselwort, avg()
berechnet seine Ergebnisse nur auf der Grundlage eindeutiger Werte. Dies ist im Wesentlichen dasselbe wie das Entfernen doppelter Werte und das anschließende Berechnen des Durchschnitts aus den verbleibenden Werten.
Syntax
Um den DISTINCT
zu verwenden Schlüsselwort, fügen Sie es einfach als erstes Argument ein.
So:
avg(DISTINCT X)
Wobei X
ist der Spaltenname, für den Sie den Durchschnitt berechnen.
Beispiel
Nehmen Sie die folgende Tabelle namens Products
:
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Blue Widget 10.0 3 Red Widget 10.0 4 Green Widget 10.0 5 Widget Stick 89.75 6 Foo Cap 11.99
Wenn ich ein normales avg()
ausführe in der Preisspalte:
SELECT avg(Price) FROM Products;
Hier ist, was ich bekomme:
45.2066666666667
Aber wenn ich einen DISTINCT
ausführe Abfrage:
SELECT avg(DISTINCT Price) FROM Products;
Ich verstehe:
62.81
In diesem Fall ändert es also das Ergebnis ganz erheblich.
Nur um das klarzustellen, hier sind sie Seite an Seite:
SELECT
avg(Price) AS "Non-Distinct",
avg(DISTINCT Price) AS "Distinct"
FROM Products;
Ergebnis:
Non-Distinct Distinct ---------------- ---------- 45.2066666666667 62.81
Wie Sie sich wahrscheinlich vorstellen können, verwenden Sie den DISTINCT
Stichwort mit avg()
könnte die Ergebnisse enorm verfälschen, besonders wenn es viele Duplikate an einem Ende des Bereichs, aber nicht viele Duplikate am anderen Ende gibt.