Skip to main content

3)


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
);

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;

Wer ist der letzte Kunde (im Alphabet)?

SELECT max(Firma)
FROM kunden;

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;

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;

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;

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";

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;

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?