Übungsaufgaben Lektion 8
zur Datenbank Onlineshop

SQL-Syntax

SELECT [DISTINCT] * | spalte1 [AS alias1], spalte2 [AS alias2], …
FROM tabelle1 [t1], tabelle2 [t2], …
[WHERE bedingung1 (AND | OR) bedingung2 (AND | OR) … ]
[GROUP BY spalte1, spalte2, …
   [HAVING gruppenBedingung1 (AND | OR) gruppenBedingung2 (AND | OR) …]]
[ORDER BY spalte1 [ASC | DESC], spalte2 [ASC | DESC], …]
[LIMIT anzahl]

Hinweis: Optionale Elemente stehen in eckigen Klammern. Ein senkrechter Strich trennt Alternativen.

Aufgaben

Die Datenbank Onlineshop enthält exemplarische Daten eines fiktiven Onlineshops.

Entwerfen Sie SQL-Abfragen, um die folgenden Daten zu erhalten:

1.) Gesucht sind alle Produkte, die schon mehr als 5-mal bestellt wurden. Sortieren Sie die Produkte nach der Anzahl der Bestellungen. Ein Produkt, das in einer Bestellung zweimal bestellt wurde, soll dabei auch zweimal gezählt werden.
2.) Gesucht sind die Kategorien für Produkte, aus denen schon mehr als 10 Kunden, die nach dem 1.1.2000 geboren wurden, Produkte bestellt haben.
3.) Gesucht sind alle Kunden, die in einer Bestellung mehr als ein Produkt bestellt haben und bei denen der Gesamtpreis für die Bestellung über 1000 (€) liegt. Sortieren Sie die Kunden absteigend nach dem Gesamtpreis Ihrer Bestellung.

Hinweis zu Aufgabe 4 bis 6: Mit dem Befehl strftime('%Y-%m', Attribut) können Jahr und Monat in dem Format JJJJ-MM aus einem Attribut, das als Wert ein Datum enthält, extrahiert werden. Der Ausdruck kann sowohl in der SELECT- als auch in der GROUP BY-Klausel verwendet werden, um Datensätze z. B. nach Monaten zu gruppieren. Wird statt '%Y-%m' das Muster '%Y' angegeben, wird nur das Jahr extrahiert. Mit dem Muster '%m' wird nur der Monat extrahiert.

4.) Gesucht sind alle Monate mit dem jeweiligen Jahr, in denen mehr als 3 Bestellungen eingegangen sind.
Verwenden Sie dazu den Ausdruck strftime('%Y-%m', Bestelldatum).

5.) Gesucht sind die Anzahl der Bestellungen pro Jahr.
6.) Gesucht sind die Jahre, in denen es mehr als 10 Neukunden gab.