Zusammenfassung :In diesem Tutorial erfahren Sie, wie Sie SQLite AVG
verwenden Funktion zur Berechnung des Durchschnittswerts einer Reihe von Werten.
Einführung in die SQLite AVG-Funktion
Der AVG
Die Funktion ist eine Aggregatfunktion, die den Durchschnittswert aller Nicht-NULL-Werte berechnet innerhalb einer Gruppe.
Im Folgenden wird die Syntax von AVG
veranschaulicht Funktion:
AVG([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Standardmäßig ist der AVG
Funktion verwendet ALL
Klausel, ob Sie es angeben oder nicht. Das bedeutet, dass die AVG-Funktion alle Nicht-NULL-Werte verwendet, wenn sie den Durchschnittswert berechnet.
Falls Sie den Durchschnittswert unterschiedlicher (oder eindeutiger) Werte berechnen möchten, müssen Sie die DISTINCT-Klausel explizit im Ausdruck angeben.
Wenn eine Spalte gemischte Datentypen wie Integer, Real, BLOB und Text speichert, wird SQLite AVG
Funktion interpretiert das BLOB, das nicht wie eine Zahl aussieht, als Null (0).
Der Wert von AVG
Funktion ist immer ein Fließkommawert oder ein NULL
Wert. Der AVG
Funktion gibt nur ein NULL
zurück Wert wenn und nur wenn alle Werte in der Gruppe sind NULL
Werte.
Sie können einen kurzen Test machen, um zu sehen, wie die SQLite-Funktion mit verschiedenen Datentypen arbeitet.
Erstellen Sie zunächst eine neue Tabelle mit dem Namen avg_tests
mit der folgenden Anweisung:
CREATE TABLE avg_tests (val);
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Fügen Sie als Nächstes einige gemischte Werte in avg_tests
ein Tabelle.
INSERT INTO avg_tests (val)
VALUES
(1),
(2),
(10.1),
(20.5),
('8'),
('B'),
(NULL),
(x'0010'),
(x'0011');
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Fragen Sie dann Daten aus avg_tests
ab Tabelle.
SELECT rowid,
val
FROM avg_tests;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Danach können Sie den AVG
verwenden Funktion, um den Durchschnitt der ersten vier Zeilen zu berechnen, die nur numerische Werte enthalten.
SELECT
avg(val)
FROM
avg_tests
WHERE
rowid < 5;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Wenden Sie abschließend den AVG
an Funktion auf alle Werte in val
Spalte der avg_tests
Tabelle.
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Sie haben 9 Zeilen in den avg_tests
Tisch. Die Zeile 7 ist NULL
. Daher wird bei der Berechnung des Durchschnitts der AVG
Funktion ignoriert es und nimmt 8 Zeilen in die Berechnung auf.
Die ersten vier Zeilen sind die ganzzahligen und reellen Werte:1,2, 10,1 und 20,5. Die SQLite AVG-Funktion verwendet diese Werte in der Berechnung.
Die 5. und 6. Reihe sind Texttypen, weil wir die als „B“ und „8“ eingefügt haben. Da 8 wie eine Zahl aussieht, interpretiert SQLite B als 0 und „8“ als 8.
Die 8. und 9. Reihe sind BLOB
Typen, die nicht wie Zahlen aussehen, daher interpretiert SQLite diese Werte als 0.
Der AVG(cal)
Ausdruck verwendet die folgende Formel:
AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2
Code language: SQL (Structured Query Language) (sql)
Mal sehen, wie der DISTINCT
Klausel funktioniert.
Fügen Sie zuerst eine neue Zeile in avg_tests
ein Tabelle mit einem Wert existiert bereits.
INSERT INTO avg_tests (val)
VALUES (10.1);
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Wenden Sie zweitens den AVG
an Funktion ohne DISTINCT
Klausel:
SELECT
avg(val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Drittens fügen Sie den DISTINCT
hinzu -Klausel zum AVG
Funktion:
SELECT
avg(DISTINCT val)
FROM
avg_tests;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Da die avg_tests
Tabelle hat zwei Zeilen mit demselben Wert 10.1, dem AVG(DISTINCT)
nimmt nur die eine Zeile zur Berechnung. Daher haben Sie ein anderes Ergebnis erhalten.
SQLite AVG
Funktion Praxisbeispiele
Wir werden die tracks
verwenden Tabelle in der Beispieldatenbank für die Demonstration.
Um die durchschnittliche Länge aller Tracks in Millisekunden zu berechnen, verwenden Sie die folgende Anweisung:
SELECT
avg(milliseconds)
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
SQLite AVG-Funktion mit GROUP BY
Klausel
Um die durchschnittliche Länge der Titel für jedes Album zu berechnen, verwenden Sie den AVG
Funktion mit dem GROUP BY
Klausel.
Zuerst das GROUP BY
-Klausel gruppiert eine Reihe von Titeln nach Alben. Dann der AVG
Funktion berechnet die durchschnittliche Länge der Tracks für jedes Album.
Siehe folgende Anweisung.
SELECT
albumid,
avg(milliseconds)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
SQLite AVG
Funktion mit INNER JOIN
Klauselbeispiel
Um den Albumtitel zusammen mit der albumid
zu erhalten -Spalte verwenden Sie die INNER JOIN-Klausel in der obigen Anweisung wie die folgende Abfrage:
SELECT
tracks.AlbumId,
Title,
round(avg(Milliseconds), 2) avg_length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Beachten Sie, dass wir den ROUND
verwendet haben Funktion, um den Gleitkommawert auf 2 Stellen rechts vom Dezimalkomma zu runden.
Beispiel für SQLite-AVG-Funktion mit HAVING-Klausel
Sie können entweder den AVG
verwenden Funktion oder den Alias ihrer Spalte in der HAVING-Klausel, um Gruppen zu filtern. Die folgende Anweisung ruft nur die Alben ab, deren durchschnittliche Länge zwischen 100000 und 200000 liegt.
SELECT
tracks.albumid,
title,
round(avg(milliseconds),2) avg_leng
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid
HAVING
avg_leng BETWEEN 100000 AND 200000;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie SQLite AVG
verwenden Funktion zur Berechnung der Durchschnittswerte von Nicht-NULL-Werten in einer Gruppe.