Du bestimmst die benötigten Ausgabespalten, entfernst Duplikate und machst mit berechneten Spalten und Sortierung aus Rohdaten eine brauchbare Übersicht.
Hinter SELECT stehen die gewünschten Spalten oder Ausdrücke, hinter FROM die Tabelle. AS benennt eine Ausgabespalte, DISTINCT entfernt identische Ausgabezeilen. Ohne ORDER BY ist die Reihenfolge nicht zugesichert. ASC sortiert aufsteigend, DESC absteigend; ein zweites Sortierkriterium löst Gleichstände auf. LIMIT begrenzt die Anzahl ausgegebener Zeilen. Die Browserdatenbank verwendet SQLite: Statt MONTH(datum) und YEAR(datum), die du in anderen SQL-Dialekten findest, nutzt du hier strftime('%m', datum) und strftime('%Y', datum). Diese liefern Text wie 03 und 2026 aus einem ISO-Datum JJJJ-MM-TT.
SELECT
FROM
Projektion
DISTINCT
AS
ORDER BY
ASC
DESC
LIMIT
Datumsfunktion
Beispiel
SELECT bezeichnung AS artikelname, preis * bestand AS lagerwert
FROM artikel
ORDER BY lagerwert DESC, id ASC
LIMIT 3;
-- SQLite: strftime('%Y', '2026-03-15') liefert '2026'.
Typische Fehler
Eine zufällige Ausgabereihenfolge für garantiert halten
DISTINCT auf die ganze Ausgabezeile statt nur gedanklich auf eine Spalte beziehen
Ein gleiches Sortiermerkmal ohne zweites Kriterium bei LIMIT lassen
Kurz zusammengefasst
SELECT bestimmt die Form der Ausgabe. DISTINCT bereinigt doppelte Zeilen, ORDER BY ordnet sie, LIMIT wählt die ersten Zeilen dieser Ordnung.
Abi-Bezug
Leite aus einer fachlichen Ergebnisbeschreibung die richtige Spaltenliste und eine vollständige Sortierung ab. Beachte den vorgegebenen SQL-Dialekt bei Datumsfunktionen.
Jetzt selbst ausprobieren
Prüfe deine Lösung automatisch. Bei Bedarf helfen dir ein Tipp und anschließend die Musterlösung.
BPE 6J11 Punkteleicht
Nur die benötigten Spalten
Noch nicht begonnen
Aufgabenstellung
Zeige für jeden Artikel nur die ID und die Bezeichnung.
Ergebnisspalten in dieser Reihenfolge: id, bezeichnung. 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
Nach SELECT steht die gewünschte Spaltenliste.
Das Sternchen würde auch Preis, Bestand und weitere nicht verlangte Spalten liefern.
Lösung anzeigen
SELECT id, bezeichnung FROM artikel;
BPE 6J11 Punkteleicht
Spalten bewusst anordnen
Noch nicht begonnen
Aufgabenstellung
Erstelle eine Liste aller Artikel, in der zuerst die Kategorie und danach die Bezeichnung steht. Gleichlautende Kategorien dürfen mehrfach vorkommen.
Ergebnisspalten in dieser Reihenfolge: kategorie, bezeichnung. 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
Die Reihenfolge hinter SELECT ist die Reihenfolge der Ergebnisspalten.
Hier wird jeder Artikel ausgegeben, nicht nur jede Kategorie.
Lösung anzeigen
SELECT kategorie, bezeichnung FROM artikel;
BPE 6J12 Punktemittel
Kategorien ohne Wiederholung
Noch nicht begonnen
Aufgabenstellung
Gib jede im Sortiment vorkommende Kategorie genau einmal aus.
Ergebnisspalten in dieser Reihenfolge: kategorie. 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
Mehrere Artikel können zur gleichen Kategorie gehören.
DISTINCT unmittelbar nach SELECT entfernt gleiche Ausgabezeilen.
Lösung anzeigen
SELECT DISTINCT kategorie FROM artikel;
BPE 6J12 Punktemittel
Verständliche Spaltennamen
Noch nicht begonnen
Aufgabenstellung
Zeige die Bezeichnung als artikelname und den Preis als euro.
Ergebnisspalten in dieser Reihenfolge: artikelname, euro. 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
AS vergibt einen Namen für die Ausgabespalte und verändert die Tabelle nicht.
Beide ausgewählten Spalten bekommen einen eigenen Alias.
Lösung anzeigen
SELECT bezeichnung AS artikelname, preis AS euro FROM artikel;
BPE 6J12 Punktemittel
Wert des vorhandenen Bestands
Noch nicht begonnen
Aufgabenstellung
Gib für jeden Artikel seine Bezeichnung und den Warenwert aus: Preis je Stück mal Bestand. Benenne den berechneten Wert lagerwert.
Ergebnisspalten in dieser Reihenfolge: bezeichnung, lagerwert. 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 in jeder Zeile preis * bestand.
Ein Artikel mit Bestand 0 hat auch dann Lagerwert 0, wenn sein Einzelpreis positiv ist.
Lösung anzeigen
SELECT bezeichnung, preis * bestand AS lagerwert FROM artikel;
BPE 6J12 Punktemittel
Preise aufsteigend sortieren
Noch nicht begonnen
Aufgabenstellung
Zeige ID, Bezeichnung und Preis aufsteigend nach Preis. Bei gleichem Preis entscheidet die ID aufsteigend.
Ergebnisspalten in dieser Reihenfolge: id, bezeichnung, preis. Die angegebene Zeilensortierung wird geprüft. 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
ORDER BY steht nach FROM und enthält zuerst das wichtigste Kriterium.
Die drei Artikel mit Preis 3 werden zusätzlich nach ID geordnet.
Lösung anzeigen
SELECT id, bezeichnung, preis FROM artikel ORDER BY preis ASC, id ASC;
BPE 6J13 Punkteanspruchsvoll
Die drei teuersten Artikel
Noch nicht begonnen
Aufgabenstellung
Gib ID, Bezeichnung und Preis der drei teuersten Artikel aus. Sortiere nach Preis absteigend, bei gleichem Preis nach ID aufsteigend.
Ergebnisspalten in dieser Reihenfolge: id, bezeichnung, preis. Die angegebene Zeilensortierung wird geprüft. 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
DESC bringt die höchsten Preise nach vorn.
LIMIT 3 wird erst auf die vollständig sortierte Ausgabe angewendet.
Lösung anzeigen
SELECT id, bezeichnung, preis FROM artikel ORDER BY preis DESC, id ASC LIMIT 3;
BPE 6J13 Punkteanspruchsvoll
Jahr und Monat aus einem Datum
Noch nicht begonnen
Aufgabenstellung
Gib für jede Bestellung die ID, das Jahr als jahr und den zweistelligen Monat als monat aus. Sortiere nach ID. Dieser SQLite-Trainer verwendet strftime('%Y', datum) und strftime('%m', datum) statt YEAR/MONTH anderer SQL-Dialekte. Die beiden Ergebnisse sind Text.
Ergebnisspalten in dieser Reihenfolge: id, jahr, monat. Die angegebene Zeilensortierung wird geprüft. 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 bestellung (id INTEGER PRIMARY KEY, region TEXT NOT NULL, status TEXT NOT NULL, betrag INTEGER NOT NULL, datum TEXT NOT NULL);
Startdaten: bestellung
id
region
status
betrag
datum
1
Nord
bezahlt
40
2026-03-01
2
Nord
offen
20
2026-03-10
3
Sued
bezahlt
30
2026-03-12
4
Sued
bezahlt
70
2026-04-01
5
West
storniert
50
2026-03-20
6
West
bezahlt
10
2025-03-15
7
Nord
bezahlt
60
2026-04-15
8
Ost
offen
20
2026-03-31
Ausgabe bzw. Vorschau
Noch nicht ausgeführt.
2 Tipps anzeigen
%Y steht für das vierstellige Jahr, %m für den zweistelligen Monat.
Vergib beide Aliase und behalte die führende Null bei 03 und 04.
Lösung anzeigen
SELECT id, strftime('%Y', datum) AS jahr, strftime('%m', datum) AS monat FROM bestellung ORDER BY id;