Direkt zum Inhalt

BPE 6 · J1

Daten auswählen, berechnen und sortieren

Du bestimmst die benötigten Ausgabespalten, entfernst Duplikate und machst mit berechneten Spalten und Sortierung aus Rohdaten eine brauchbare Übersicht.

Bildungsplanbezug: BPE 6.4 · interne Lerneinheit 6.2.2

Geschätzte Lernzeit: 50 Minuten

Noch nicht begonnen

Das kannst du danach

  • eine Projektion mit SELECT formulieren
  • DISTINCT und Aliase gezielt einsetzen
  • mit ASC, DESC und LIMIT sortieren und begrenzen
  • Jahr und Monat aus Datumswerten bestimmen

Verständlich erklärt

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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Nach SELECT steht die gewünschte Spaltenliste.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Die Reihenfolge hinter SELECT ist die Reihenfolge der Ergebnisspalten.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Mehrere Artikel können zur gleichen Kategorie gehören.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. AS vergibt einen Namen für die Ausgabespalte und verändert die Tabelle nicht.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Berechne in jeder Zeile preis * bestand.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. ORDER BY steht nach FROM und enthält zuerst das wichtigste Kriterium.
  2. 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
idbezeichnungkategoriepreisbestandlieferant_id
1Heft A5Papier2121
2Block A4Papier401
3FinelinerStifte382
4BleistiftStifte1202
5OrdnerAblage551
6MappeAblage30NULL
7MarkerStifte35NULL

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. DESC bringt die höchsten Preise nach vorn.
  2. 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
idregionstatusbetragdatum
1Nordbezahlt402026-03-01
2Nordoffen202026-03-10
3Suedbezahlt302026-03-12
4Suedbezahlt702026-04-01
5Weststorniert502026-03-20
6Westbezahlt102025-03-15
7Nordbezahlt602026-04-15
8Ostoffen202026-03-31

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. %Y steht für das vierstellige Jahr, %m für den zweistelligen Monat.
  2. 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;

Lektionsabschluss

Bearbeite Aufgaben, um deine Auswertung zu sehen.