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:

  1. 3 Tabellen verbinden (kunde, bestellung, produkt)
  2. Gesamtpreis berechnen
  3. Durchschnitt aller Bestellwerte berechnen
  4. 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.