Ein Aggregat fasst viele Eingabezeilen zu einem Ergebnis zusammen. COUNT(*) zählt alle Zeilen; COUNT(spalte) zählt nur nicht-NULL-Werte. COUNT(DISTINCT spalte) zählt verschiedene bekannte Werte. SUM addiert, AVG berechnet den Mittelwert, MIN und MAX bestimmen Extremwerte. NULL-Werte werden von diesen Spaltenaggregaten nicht als null Euro mitgerechnet. Bei einer leeren Eingabemenge liefert COUNT 0, SUM und AVG liefern NULL. Gib berechneten Ergebnissen mit AS aussagekräftige Namen.
Aggregatfunktion
COUNT
SUM
AVG
MIN
MAX
NULL
Beispiel
SELECT COUNT(*) AS zeilen,
COUNT(standort) AS mit_standort
FROM medium;
Typische Fehler
COUNT(spalte) mit der Zahl aller Datensätze verwechseln
Zeilensummen und Summe aller Zeilen verwechseln
NULL bei leerer Menge ungefragt als 0 interpretieren
Kurz zusammengefasst
Bestimme zuerst, welche Zeilen in die Auswertung gehören, danach die passende Aggregatfunktion. Die Behandlung von NULL ist Teil der fachlichen Aussage.
Abi-Bezug
Wähle die richtige Aggregation für eine Kennzahl und erläutere, wie fehlende Werte oder eine leere Auswahl ihr Ergebnis beeinflussen.
Jetzt selbst ausprobieren
Prüfe deine Lösung automatisch. Bei Bedarf helfen dir ein Tipp und anschließend die Musterlösung.
BPE 6J11 Punkteleicht
Alle Artikelpositionen zählen
Noch nicht begonnen
Aufgabenstellung
Zähle die Artikelzeilen im Sortiment. Gesucht ist die Anzahl verschiedener Artikelpositionen, nicht die Summe ihrer Bestände. Nenne das Ergebnis anzahl.
Ergebnisspalten in dieser Reihenfolge: anzahl. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Berechne in einer Ergebniszeile die Anzahl der Artikel mit bekannter lieferant_id als zugeordnet und die Anzahl unterschiedlicher bekannter Lieferanten-IDs als lieferanten.
Ergebnisspalten in dieser Reihenfolge: zugeordnet, lieferanten. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
COUNT(lieferant_id) übergeht die beiden NULL-Werte.
DISTINCT zählt jede bekannte Lieferanten-ID nur einmal.
Lösung anzeigen
SELECT COUNT(lieferant_id) AS zugeordnet, COUNT(DISTINCT lieferant_id) AS lieferanten FROM artikel;
BPE 6J12 Punktemittel
Gesamten Warenwert berechnen
Noch nicht begonnen
Aufgabenstellung
Berechne den gesamten Warenwert des vorhandenen Bestands in Euro als gesamtwert. Jeder Artikel trägt Preis mal Bestand bei.
Ergebnisspalten in dieser Reihenfolge: gesamtwert. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
Berechne zuerst je Artikel preis * bestand.
SUM fasst anschließend diese einzelnen Warenwerte zusammen.
Lösung anzeigen
SELECT SUM(preis * bestand) AS gesamtwert FROM artikel;
BPE 6J12 Punktemittel
Mittlerer Preis einer Artikelposition
Noch nicht begonnen
Aufgabenstellung
Berechne den Durchschnitt der sieben Einzelpreise als durchschnitt. Jede Artikelposition zählt gleich stark, unabhängig von ihrem Bestand.
Ergebnisspalten in dieser Reihenfolge: durchschnitt. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
AVG bildet den Mittelwert der Werte einer Spalte.
Eine Gewichtung mit bestand wäre hier eine andere fachliche Kennzahl.
Lösung anzeigen
SELECT AVG(preis) AS durchschnitt FROM artikel;
BPE 6J12 Punktemittel
Günstigster und höchster Preis
Noch nicht begonnen
Aufgabenstellung
Gib den kleinsten Preis als minimum und den größten Preis als maximum gemeinsam in einer Ergebniszeile aus.
Ergebnisspalten in dieser Reihenfolge: minimum, maximum. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
MIN und MAX bestimmen jeweils einen Extremwert.
Du kannst beide Aggregate in dieselbe SELECT-Liste schreiben.
Lösung anzeigen
SELECT MIN(preis) AS minimum, MAX(preis) AS maximum FROM artikel;
BPE 6J13 Punkteanspruchsvoll
Was ergibt eine leere Auswahl?
Noch nicht begonnen
Aufgabenstellung
Wähle nur Artikel der hier nicht vorhandenen Kategorie Technik. Berechne ihre Zeilenanzahl als anzahl und die Summe ihrer Bestände als stueck. Ersetze SQL-NULL nicht durch 0.
Ergebnisspalten in dieser Reihenfolge: anzahl, stueck. Die Zeilenreihenfolge ist hier beliebig. Gib genau diese eine Ergebnistabelle aus.
Datenbankschema und vollständige Startdaten anzeigen
Fiktive Übungsdaten. Jeder Test startet neu mit genau diesen Daten. NULL bedeutet: kein Wert gespeichert. Preise und Beträge sind ganze Euro; das Datum hat das Format JJJJ-MM-TT.
CREATE TABLE artikel (id INTEGER PRIMARY KEY, bezeichnung TEXT NOT NULL, kategorie TEXT NOT NULL, preis INTEGER NOT NULL, bestand INTEGER NOT NULL, lieferant_id INTEGER);
Startdaten: artikel
id
bezeichnung
kategorie
preis
bestand
lieferant_id
1
Heft A5
Papier
2
12
1
2
Block A4
Papier
4
0
1
3
Fineliner
Stifte
3
8
2
4
Bleistift
Stifte
1
20
2
5
Ordner
Ablage
5
5
1
6
Mappe
Ablage
3
0
NULL
7
Marker
Stifte
3
5
NULL
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
WHERE filtert die Eingabezeilen vor den Aggregaten.
Bei leerer Menge ist COUNT gleich 0, SUM aber NULL.
Lösung anzeigen
SELECT COUNT(*) AS anzahl, SUM(bestand) AS stueck FROM artikel WHERE kategorie = 'Technik';