Zurück zur Artikelliste Artikel
6 Leseminuten

SQL SUM() Funktion erklärt mit 5 praktischen Beispielen

Aggregatfunktionen sind ein wichtiger Bestandteil der SQL-Kenntnisse - und es gibt keinen besseren Ort, um sie zu lernen, als die Funktion SUMME(). In diesem Artikel können Sie Ihre SQL-Kenntnisse mit 5 praktischen Beispielen für SUM() erweitern oder auffrischen.

Mit SQL können wir mehr tun, als nur Werte oder Ausdrücke aus Tabellen auszuwählen. Die meisten Operationen in relationalen Datenbanken verwenden Aggregatfunktionen wie SUM(), um Berechnungen mit Daten durchzuführen.

Mit Aggregatfunktionen können Sie verschiedene Statistiken für eine Gruppe von Zeilen berechnen. Weitere Informationen dazu finden Sie in dem Artikel SQL Agregatfunktionen für einsteiger.

Die Funktion SUM() summiert alle Werte in einer bestimmten Spalte oder die von einem Ausdruck zurückgegebenen Werte (die aus Zahlen, Spaltenwerten oder beidem bestehen können). Dies ist eine gute Einführung in die SQL-Aggregatfunktionen, also fangen wir gleich damit an!

Erste Schritte: Syntax der SUM-Funktion

Hier sehen Sie die Syntax der SUM-Funktion:

SUM([DISTINCT] column_or_expression)

Wie Sie sehen, benötigt diese Funktion nur ein Argument: einen Spaltennamen oder einen Ausdruck. Die im Argument angegebenen Werte werden summiert und von der Funktion SUM() zurückgegeben. Das Schlüsselwort DISTINCT ist optional; wenn es verwendet wird, fügt SUM() nur nicht-wiederkehrende Werte hinzu. Ich werde diesen Punkt im nächsten Abschnitt näher erläutern.

Machen wir uns zunächst mit den Daten vertraut, auf denen wir unsere SQL SUM() -Abfragen aufbauen werden.

Die Tabelle product Tabelle speichert Daten, die wir zur Berechnung der Summe der gegebenen Werte verwenden werden. Hier ist ein Beispiel für die Daten:

idnamepricequantitycategory
1dress1201clothing
2T-shirt552clothing
3jacket6002clothing
4netbook2100NULLIT
5mouse24NULLIT
6bricks681toys
7wood mobile221toys
8teddy bear70NULLtoys

Beispiel 1: Verwendung von SUM() mit einer Spalte

Wenn Sie in einer Spalte gespeicherte Werte summieren möchten, verwenden Sie SUM() mit dem Namen dieser Spalte als Argument. Sehen Sie sich das folgende Beispiel an:

SELECT 
  SUM(quantity) AS sum_quantity 
FROM product;

In dieser Abfrage verwenden wir SUM() allein in der SELECT-Anweisung. Die Funktion SUM() addiert alle Werte aus der Spalte quantity und gibt die Summe als Ergebnis der Funktion zurück. Der Name der neuen Ergebnisspalte (d. h. der Alias) ist sum_quantity.

Hier ist das Ergebnis:

sum_quantity
7

Wie Sie sehen, ist die Summe der Werte in der Spalte quantity in der Tabelle product 7. Wenn eine der Zeilen ein NULL in dieser Spalte hat, lässt SUM() diese Zeile bei der Berechnung aus. Beachten Sie, dass das Ergebnis nur eine Zeile enthält: Alle einzelnen Zeilen wurden von SUM() "zusammengeklappt" - ihre Details sind im Ergebnis nicht verfügbar.

Beispiel 2: Verwendung von SUM() mit einem Ausdruck

Als nächstes betrachten wir ein Beispiel, das einen Ausdruck als SUM() Argument verwendet. Dies ist die Abfrage:

SELECT 
  SUM(quantity*price) AS total_value 
FROM product;

Und das Ergebnis ist:

total_value
1520

In diesem Fall ist das Argument in der Funktion SUM() ein Ausdruck, der den Gesamtwert für jedes Produkt berechnet: die Menge des Produkts (der Wert in der Spalte quantity) multipliziert mit seinem Preis (der Wert in der Spalte Preis). Die für jedes Produkt berechneten Gesamtwerte werden summiert und die Gesamtsumme ihrer Werte wird zurückgegeben; die total_sum ist 1520, wie Sie im Ergebnis sehen können.

Beispiel 3: Verwendung von SUMME() mit GROUP BY

Normalerweise verwenden Sie die Funktion SUMME mit der Klausel GROUP BY. Mit GROUP BY werden die Summenwerte für eine Gruppe von Zeilen berechnet. Wenn Sie mit GROUP BY nicht vertraut sind, empfehle ich Ihnen die Lektüre von GROUP BY in SQL verwenden oder Wie funktioniert SQL GROUP BY? bevor Sie mit diesem Beispiel fortfahren.

In der Abfrage unten sehen Sie, wie viele Produkte in jeder Kategorie sind:

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category;

Und das Ergebnis dieser Abfrage ist:

categorytotal_quantity
clothing5
ITNULL
toys2

In diesem Fall befindet sich die Spalte Kategorie in SELECT, da wir die Kategorie sehen wollen, für die die Summe berechnet wird. Als nächstes folgt die Funktion SUM(), die die Mengenwerte summiert. Das Hinzufügen der Klausel GROUP BY bedeutet, dass Produkte mit demselben Wert in der Kategoriespalte in einer Gruppe zusammengefasst werden; die Summe wird für jede Gruppe separat berechnet. Beachten Sie schließlich, dass die Klausel GROUP BY immer nach FROM stehen muss.

Beachten Sie, dass die berechnete Summe für die Kategorie IT NULL lautet. Das liegt daran, dass alle Zeilen, die einen "IT"-Wert in der Kategorie-Spalte haben, eine NULL in der quantity -Spalte haben. In der Kategorie "Spielzeug" gibt es ein Produkt mit einem NULL-Wert in der Spalte "Menge", so dass die übrigen Werte in dieser Kategorie summiert werden.

Natürlich können Sie auch Datensätze gruppieren und Summen über mehr als eine Spalte berechnen.

Beispiel 4: Verwendung von SUM() mit DISTINCT

Die SQL-Funktion SUM() kann auch nur eindeutige (d.h. sich nicht wiederholende) Werte summieren. Verwenden Sie dazu die Funktion SUM mit dem Schlüsselwort DISTINCT im Argument. Ein Beispiel:

SELECT 
  category, 
  SUM(DISTINCT quantity) 
FROM product
GROUP BY category;

Und das von ihr zurückgegebene Ergebnis:

categorytotal_quantity
clothing3
ITNULL
toys2

Wenn Sie sich die Datenbank ansehen, werden Sie feststellen, dass fünf Kleidungsstücke auf Lager sind:

namequantitycategory
dress1clothing
T-shirt2clothing
jacket2clothing

Die Abfrage liefert jedoch eine 3 für die Gesamtmenge der auf Lager befindlichen Kleidungsstücke. Und warum? Weil die "2" zweimal in der Mengenspalte für Artikel in der Kategorie Kleidung erscheint. Wenn Sie DISTINCT verwenden, werden alle wiederholten Werte in der Spalte ignoriert.

Beachten Sie, dass das Schlüsselwort DISTINCT im Funktionsargument an erster Stelle steht, gefolgt von dem Spaltennamen oder dem Ausdruck.

Beispiel 5: Verwendung von SUM() mit HAVING

Sie können SUM() in der HAVING Klausel als Teil der Filterkriterien verwenden. In der folgenden Abfrage sollen zum Beispiel nur Zeilen mit einer bestimmten Anzahl im Ergebnis erscheinen:

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category
HAVING SUM(quantity)>2;

Und das Ergebnis:

categorytotal_quantity
clothing5

Nur eine Kategorie wurde von der Abfrage zurückgegeben: Kleidung. Und warum? Weil die Summe der Anzahl der Produkte größer als 2 sein muss, um in das Ergebnis aufgenommen zu werden. Die Spalte Kleidung (mit total_quantity von 5) erfüllt dieses Kriterium. Die anderen Kategorien werden nicht angezeigt, weil ihre Gesamtmengen kleiner als 2 sind.

Möchten Sie Ihre Kenntnisse der SQL-Funktion SUM() testen?

In diesem Artikel haben Sie gelernt, wie die SQL-Funktion SUM() funktioniert. Sie können sie verwenden, um alle Werte einer Spalte über alle Zeilen einer Tabelle zu addieren, um die Ergebnisse eines Ausdrucks zu summieren, der mehr als eine Spalte verwendet, und um die Werte für eine Gruppe von Zeilen zu summieren. Sie können SUM() auch innerhalb der HAVING-Klausel verwenden, um Daten nach den summierten Werten zu filtern.

Möchten Sie mehr über SUM() erfahren? Der Artikel Wie Man CASE WHEN mit SUM() in SQL verwendet erklärt, wie man SUM() mit dem Ausdruck CASE WHEN verwendet. Erweitern Sie Ihr Wissen! Und wenn Sie Ihre SQL-Kenntnisse testen möchten, ist unser SQL-Übungssatz ist eine gute Option.

Lernen Sie weiter und üben Sie weiter SQL!