CodeGym /Kurse /SQL SELF /Daten summieren mit SUM() — Syntax und Beispiele

Daten summieren mit SUM() — Syntax und Beispiele

SQL SELF
Level 7 , Lektion 2
Verfügbar

Stell dir vor... Du hast eine riesige Einkaufsliste aus dem Supermarkt. Du willst wissen, wie viel Geld du am Ende ausgegeben hast. Du wirst doch nicht alles per Hand zusammenrechnen, oder? Die Kassierer:innen haben das alles schon in ihrer Datenbank. Deshalb bekommst du den Kassenbon mit der richtigen Summe. Wahrscheinlich hilft irgendwo in deren App unsere Heldin des heutigen Tages — die Funktion SUM()! Das ist eine Aggregatfunktion, mit der du Werte in einer numerischen Spalte zusammenzählen kannst.

Syntax von SUM()

Die Funktion SUM() sieht genauso einfach aus wie ihr Name, aber lass uns das mal Schritt für Schritt anschauen:

SELECT SUM(spalte)
FROM tabelle;

Die Funktion nimmt alle Werte in der angegebenen Spalte und summiert sie. Aber mal ehrlich: Magisches Addieren von Texten oder Daten gibt's hier nicht! Nur Zahlen.

Beispiele für die Verwendung von SUM()

Lass uns mit einem einfachen Beispiel starten. Wir arbeiten mit der Tabelle salaries, die die Gehälter der Mitarbeitenden speichert:

employee_id salary
1 50000
2 60000
3 55000
4 75000

Beispiel 1: Alle Gehälter aufsummieren

Du willst wissen, wie hoch die gesamte Gehaltssumme der Firma ist. So geht's:

SELECT SUM(salary) AS total_salary
FROM salaries;

Ergebnis:

total_salary
240000

Was ist hier passiert? PostgreSQL hat alle Werte aus der Spalte salary (50000 + 60000 + 55000 + 75000) addiert und das Ergebnis in einer neuen Spalte mit dem Namen total_salary zurückgegeben.

Beispiel 2: Summieren mit Bedingung

Angenommen, du willst die Gesamtsumme der Gehälter nur von Mitarbeitenden wissen, die mehr als 55.000 verdienen. Erinnern wir uns an unseren Lieblingsoperator WHERE:

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

Ergebnis:

high_salary_total
135000

Was ist hier passiert? Zuerst hat PostgreSQL den Filter WHERE salary > 55000 angewendet und nur die Zeilen mit Gehältern 60000 und 75000 übrig gelassen. Dann wurden diese beiden Gehälter addiert (60000 + 75000).

3. Besonderheiten bei SUM()

Wie beeinflusst NULL die SUM()? Wie wir schon gesehen haben, ist NULL einfach "nichts", und SUM() bezieht das nicht in die Berechnung ein. Schauen wir uns die Tabelle an:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

Wenn wir jetzt die gesamte Gehaltssumme wissen wollen:

SELECT SUM(salary) AS total_salary
FROM salaries;

Ergebnis:

total_salary
185000

Warum "185000" und nicht "NULL"? PostgreSQL ignoriert NULL einfach bei der Summenberechnung.

Beispiele für komplexere Abfragen mit SUM()

Beispiel 1: Summieren und Filtern in einer Abfrage

Stell dir eine Tabelle sales vor, die Verkaufsdaten speichert. So sieht sie aus:

product_id amount
1 150
2 200
3 NULL
1 100

Du willst die Gesamtsumme der Verkäufe (amount) nur für das erste Produkt (product_id = 1) wissen:

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

Ergebnis:

total_sales
150

Beispiel 2: Summe und weitere Berechnungen

Wir arbeiten wieder mit der Tabelle salaries. Du willst wissen, um wie viel die Gehaltssumme 200.000 übersteigt:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

Ergebnis:

surplus
40000

Typische Fehler bei der Verwendung von SUM()

SUM() auf nicht-numerische Daten anwenden: Wenn du aus Versehen versuchst, zum Beispiel Textwerte zu summieren, bekommst du einen Fehler. Sei vorsichtig und check die Datentypen in deiner Spalte.

NULL ignorieren: Viele Anfänger:innen vergessen NULL und denken, dass es in die Berechnung einfließt. Das kann zu unerwarteten Ergebnissen führen.

2
Aufgabe
SQL SELF, Level 7, Lektion 2
Gesperrt
Summierung aller Elemente einer Spalte
Summierung aller Elemente einer Spalte
2
Aufgabe
SQL SELF, Level 7, Lektion 2
Gesperrt
Summieren mit Bedingung
Summieren mit Bedingung
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION