3)
1
Welche Kunden haben keine Aufträge?
SELECT Firma, KundenID, BestellId
FROM kunden
LEFT JOIN bestellungen ON KundenId = KundenNr
WHERE BestellId IS NULL;
alternativ
SELECT Firma, KundenID, BestellId
FROM kunden
LEFT JOIN bestellungen ON KundenId = KundenNr
WHERE KundenId NOT IN
(
SELECT KundenNr
FROM bestellungen
);
2
Zeigen Sie (nur!) die Ladenhüter auf, d.h. Artikel die nicht bestellt wurden.
SELECT ArtikelId, Artikelname, BestellNr
FROM artikel
LEFT JOIN bestellungendetails ON ArtikelId = ArtikelNr
WHERE BestellNr IS NULL;
3
Wer ist der letzte Kunde (im Alphabet)?
SELECT max(Firma)
FROM kunden;
4
Geben Sie alle Artikel und den dazugehörigen Umsatz für das Jahr 2005 aus
SELECT Artikelname, year(Bestelldatum) Jahr,
sum(Anzahl * Einzelpreis) Umsatz
FROM artikel
INNER JOIN bestellungendetails ON ArtikelID = ArtikelNr
INNER JOIN bestellungen ON BestellNr = BestellId
WHERE year(Bestelldatum) = 2005
GROUP BY Artikelname
ORDER BY 3 DESC;
5
Geben Sie eine Liste der nachzubestellenden Artikel aus, das heißt der Lagerbestand ist kleiner als der Mindestbestand.
SELECT Artikelname, Lagerbestand, Mindestbestand
FROM artikel
WHERE Lagerbestand < Mindestbestand;
6
Erweitern Sie die vorige Abfrage: Auslaufartikel werden nicht mehr nachbestellt und sind daher nicht mit in die Liste aufzunehmen.
SELECT Artikelname, Lagerbestand, Mindestbestand
FROM artikel
WHERE Lagerbestand < Mindestbestand
AND Auslaufartikel = 0;
7
Wurden Artikel aus Dänemark (Tabelle "Lieferanten") zu Kunden nach Brasilien geliefert?
SELECT Artikelname, lieferanten.Land LieferantenLand, kunden.Land KundenLand
FROM lieferanten
INNER JOIN artikel ON LieferantenID = LieferantenNr
INNER JOIN bestellungendetails ON ArtikelId = ArtikelNr
INNER JOIN bestellungen ON BestellNr = BestellId
INNER JOIN kunden ON KundenNr = KundenId
WHERE lieferanten.Land = "Dänemark"
AND kunden.Land = "Brasilien";
8
In welchem Jahr machten wir den größten Umsatz mit Naturprodukten?
SELECT Kategoriename, year(Bestelldatum) Jahr, max(anzahl * Einzelpreis) "Umsatz"
FROM artikelkategorien
INNER JOIN artikel ON KategorieId = KategorieNr
INNER JOIN bestellungendetails ON ArtikelId = ArtikelNr
INNER JOIN bestellungen ON BestellNr = BestellId
WHERE Kategoriename = "naturprodukte"
GROUP BY Kategoriename, Jahr
ORDER BY 3 DESC
LIMIT 1;
9
Wieviel Umsatz erzielten wir mit "Steeleye Stout" im Jahr 2004?
SELECT Artikelname, year(Bestelldatum) Jahr, (Anzahl * Einzelpreis) Umsatz
FROM artikel
INNER JOIN bestellungendetails ON ArtikelId = ArtikelNr
INNER JOIN bestellungen ON BestellNr = BestellId
WHERE year(Bestelldatum) = 2004
AND Artikelname LIKE "%eye%"
GROUP BY Artikelname, year(Bestelldatum);
10
Geben Sie alle Artikel mit einem Umsatz von weniger als 2000€ aus.
SELECT Artikelname, sum(Anzahl * Einzelpreis) Umsatz
FROM artikel
INNER JOIN bestellungendetails ON ArtikelID = ArtikelNr
GROUP BY Artikelname
HAVING Umsatz < 2000;
11
Was liefert folgende Abfrage:
SELECT DISTINCT artikel.ArtikelId, artikel.Artikelname
FROM artikel
WHERE artikel.ArtikelId NOT IN
(SELECT DISTINCT ArtikelId
FROM artikel, bestellungendetails, bestellungen
WHERE ArtikelId = ArtikelNr
AND Bestellid = BestellNr
AND year(Bestelldatum) = 2005);
-> Welches Produkt wurde 2005 nicht bestellt?