Bevor du dich im SQL-Syntax und Variablen verhedderst, denk dran: Aggregatfunktionen sind deine besten Freunde, wenn es ums Zählen von allem Möglichen geht. Sie helfen dir, Summen, Durchschnittswerte und andere Magie über große Datenmengen zu berechnen.
Aggregatfunktionen nutzt man, um mathematische Operationen über Gruppen von Zeilen auszuführen. Die wichtigsten sind:
SUM(): summiert Werte.AVG(): berechnet den Durchschnittswert.COUNT(): zählt die Zeilen im Resultat.
Aggregatfunktionen sind super praktisch, wenn du mit großen Datenmengen arbeitest und einen kurzen Report brauchst: Wie viele Bestellungen hast du, wie hoch ist der Gesamtumsatz oder was war der höchste Warenkorb heute. Schauen wir uns ein paar Aggregatfunktionen genauer an.
Zeilen zählen: Funktion COUNT()
Die Funktion COUNT() zählt die Zeilen in einer Tabelle. Lass uns das mal mit Beispielen anschauen.
-- Einfaches Zählen aller Zeilen in der Bestellungen-Tabelle
SELECT COUNT(*) AS gesamt_bestellungen
FROM orders;
-- Zählen der einzigartigen Kunden
SELECT COUNT(DISTINCT customer_id) AS einzigartige_kunden
FROM orders;
-- Zählen der Bestellungen mit einem Betrag über 100
SELECT COUNT(*) AS hochwertige_bestellungen
FROM orders
WHERE total_amount > 100;
Die Funktion COUNT() wird oft genutzt, um Einträge, einzigartige Werte oder in Kombination mit Filtern zu zählen, zum Beispiel: "Wie viele Studenten haben sich für Python-Kurse angemeldet".
Summieren von Daten: Funktion SUM()
Die Funktion SUM() berechnet die Summe der Werte in einer Spalte. Lass uns jetzt die Summe aller Einkäufe der Kunden berechnen.
-- Gesamtumsatz berechnen
SELECT SUM(total_amount) AS gesamt_umsatz
FROM orders;
-- Summe der Einkäufe eines bestimmten Kunden
SELECT SUM(total_amount) AS kunden_ausgaben
FROM orders
WHERE customer_id = 101;
-- Summe der Bestellungen nach Kategorien
SELECT category, SUM(total_amount) AS kategorie_umsatz
FROM orders
GROUP BY category;
SUM() ist das Hauptwerkzeug für Verkaufsanalysen, Umsatz und alle anderen Summen. Zum Beispiel willst du wissen, wie viel ein Business-Center im letzten Monat verdient hat? Kein Problem.
Durchschnittswerte: Funktion AVG()
Die Funktion AVG() hilft dir, den Durchschnittswert eines Datensatzes zu berechnen. Zum Beispiel die Durchschnittsnote der Studenten oder den durchschnittlichen Warenkorb eines Kunden.
-- Durchschnittlicher Bestellwert
SELECT AVG(total_amount) AS durchschnitt_bestellwert
FROM orders;
-- Durchschnittlicher Bestellwert nach Kategorien
SELECT category, AVG(total_amount) AS durchschnitt_bestellwert
FROM orders
GROUP BY category;
-- Durchschnittlicher Warenkorb der Kunden in den letzten 7 Tagen
SELECT AVG(total_amount) AS durchschnitt_warenkorb_letzte_woche
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';
Durchschnittswerte sind praktisch, um Servicequalität zu analysieren, Ausreißer zu finden und wichtige Kennzahlen wie den durchschnittlichen Gewinn pro Kunde zu berechnen.
Aggregatfunktionen in der Analyse nutzen
Jetzt, wo wir die wichtigsten Funktionen kennen, schauen wir uns an, wie man sie für einfache analytische Reports nutzt.
Beispiel 1: Gesamtumsatz und Anzahl der Bestellungen
Angenommen, du willst wissen, wie viele Bestellungen es im Monat gab und wie hoch der Gesamtumsatz war.
SELECT
COUNT(*) AS gesamt_bestellungen,
SUM(total_amount) AS gesamt_umsatz
FROM orders
WHERE order_date >= '2023-10-01' AND order_date <= '2023-10-31';
Beispiel 2: Durchschnittlicher Umsatz nach Kategorien
Und was, wenn wir den Umsatz nach Produktkategorien aufteilen wollen?
SELECT
category,
COUNT(*) AS gesamt_bestellungen,
SUM(total_amount) AS gesamt_umsatz,
AVG(total_amount) AS durchschnitt_bestellwert
FROM orders
GROUP BY category;
Beispiel 3: Bestellungen der letzten 7 Tage
Oft will man Kennzahlen für kurze Zeiträume analysieren, zum Beispiel für die letzte Woche.
SELECT
COUNT(*) AS bestellungen_letzte_woche,
SUM(total_amount) AS umsatz_letzte_woche,
AVG(total_amount) AS durchschnitt_warenkorb_letzte_woche
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';
Praktische Cases mit konkreten Aufgaben
Aufgabe: Verkaufsanalyse nach Regionen
Angenommen, du bist Besitzer einer Ladenkette und willst analysieren, wie sich der Umsatz auf die Regionen verteilt.
SELECT
region,
COUNT(*) AS gesamt_bestellungen,
SUM(total_amount) AS gesamt_umsatz,
AVG(total_amount) AS durchschnitt_bestellwert
FROM orders
GROUP BY region
ORDER BY gesamt_umsatz DESC;
Aufgabe: Top-10 Kunden nach Umsatz
Jetzt bauen wir ein bisschen Logik ein, um die Top-10 Kunden nach Gesamtbestellwert zu finden.
SELECT
customer_id,
SUM(total_amount) AS gesamt_ausgaben
FROM orders
GROUP BY customer_id
ORDER BY gesamt_ausgaben DESC
LIMIT 10;
Aufgabe: Umsatzvergleich nach Wochentagen
Willst du wissen, an welchen Wochentagen dein Business am meisten verdient? Hier ein Beispiel:
SELECT
TO_CHAR(order_date, 'Day') AS wochentag,
SUM(total_amount) AS gesamt_umsatz,
AVG(total_amount) AS durchschnitt_bestellwert
FROM orders
GROUP BY TO_CHAR(order_date, 'Day')
ORDER BY gesamt_umsatz DESC;
GO TO FULL VERSION