Schwierige Analyseaufgabe (Shop-Datenbank inkl. Lösung)
Abschlussbedingungen
Schwierige Analyseaufgabe (Shop-Datenbank)
Ein Shop möchte herausfinden, welche Bestellungen besonders wertvoll sind.
Eine Bestellung gilt als hochwertig, wenn der Gesamtpreis der Bestellung
(Produktpreis × Menge) über dem durchschnittlichen Bestellwert aller Bestellungen liegt.
Aufgabe
Geben Sie alle hochwertigen Bestellungen aus.
Die Ausgabe soll enthalten:
- Kundenname
- Stadt des Kunden
- Produktname
- Menge
- Einzelpreis
- Gesamtpreis der Bestellung
Zusätzliche Anforderungen:
- Sortieren Sie die Ausgabe nach Gesamtpreis absteigend.
- Verwenden Sie eine Aggregatsfunktion zur Berechnung des durchschnittlichen Bestellwerts.
Erwartetes Ergebnis
Die Abfrage soll:
-
3 Tabellen verbinden (
kunde,bestellung,produkt) - Gesamtpreis berechnen
- Durchschnitt aller Bestellwerte berechnen
- Nur Bestellungen anzeigen, die über diesem Durchschnitt liegen
Lösung
SELECT
k.name AS Kundenname,
k.stadt AS Stadt,
p.name AS Produktname,
b.menge AS Menge,
p.preis AS Einzelpreis,
p.preis * b.menge AS Gesamtpreis
FROM bestellung b
JOIN kunde k ON b.kunde_id = k.kunde_id
JOIN produkt p ON b.produkt_id = p.produkt_id
WHERE p.preis * b.menge >
(
SELECT AVG(p2.preis * b2.menge)
FROM bestellung b2
JOIN produkt p2 ON b2.produkt_id = p2.produkt_id
)
ORDER BY Gesamtpreis DESC;
Warum diese Aufgabe schwer ist
Sie kombiniert mehrere typische Klausurkonzepte gleichzeitig:
- 3-Tabellen-JOIN
- Berechnung mit Spalten mehrerer Tabellen
-
Aggregatsfunktion (
AVG) - Subquery
- Vergleich mit berechnetem Wert
- Sortierung
Das entspricht ziemlich genau dem Schwierigkeitsgrad vieler Datenbankprüfungen.