2 a)
1
Welcher Artikel wurde am meisten (mengenmäßig) geordert?
SELECT ArtikelId, Artikelname,
sum(Anzahl) "Anzahl bestellt"
FROM bestellungendetails
INNER JOIN artikel ON ArtikelNr = ArtikelId
GROUP BY Artikelid, Artikelname
ORDER BY 3 DESC
LIMIT 1;
alternativ:
SELECT ArtikelId, Artikelname,
sum(Anzahl) "Anzahl bestellt"
FROM bestellungendetails, artikel
WHERE ArtikelNr = ArtikelId
GROUP BY ArtikelId, Artikelname
ORDER BY 3 DESC
LIMIT 1;
2
Wieviel Umsatz wurde mit diesem Artikel (aus 1.) gemacht?
SELECT ArtikelId, Artikelname,
max(Anzahl) "Anzahl bestellt",
sum(Anzahl * Einzelpreis) "Umsatz"
FROM bestellungendetails
INNER JOIN artikel ON ArtikelNr = ArtikelId
WHERE Artikelname = "Camembert Pierrot"
GROUP BY Artikelid, Artikelname
ORDER BY 4 DESC;
alternativ
SELECT ArtikelId, Artikelname,
sum(Anzahl) "Anzahl bestellt",
sum(Anzahl * Einzelpreis) "Umsatz"
FROM bestellungendetails, artikel
WHERE ArtikelNr = ArtikelId
AND Artikelname = "Camembert Pierrot"
GROUP BY Artikelid, Artikelname
ORDER BY 4 DESC;
3
Erstellen Sie jeweils eine Abfrage und ermitteln Sie darin die Umsätze
Lösen Sie zur Übung je 3 Abfragen mit Equi-Join und 3 Abfragen mit Inner Join.
je Kunde (Ausgabe
Firma
,Ort
)SELECT Firma, Ort,
sum(Anzahl * Einzelpreis) "Umsatz je Kunde"
FROM kunden
INNER JOIN bestellungen ON KundenId = KundenNr
INNER JOIN bestellungendetails ON BestellId = BestellNr
INNER JOIN artikel ON ArtikelNr = ArtikelId
GROUP BY Firma, Ort
ORDER BY 3 DESC;alternativ:
SELECT Firma, Ort,
sum(Anzahl * Einzelpreis) "Umsatz je Kunde"
FROM kunden, bestellungen, bestellungendetails, artikel
WHERE KundenId = KundenNr
AND BestellId = BestellNr
AND ArtikelNr = ArtikelId
GROUP BY Firma, Ort
ORDER BY 3 DESC;pro Artikel (
Artikelname
)SELECT Artikelname,
sum(Anzahl * Einzelpreis) "Umsatz pro Artikel"
FROM artikel INNER JOIN bestellungendetails ON ArtikelId = ArtikelNr
GROUP BY Artikelname
ORDER BY 2 DESC;alternativ:
SELECT Artikelname,
sum(Anzahl * Einzelpreis) "Umsatz pro Artikel"
FROM artikel, bestellungendetails
WHERE ArtikelId = ArtikelNr
GROUP BY Artikelname
ORDER BY 2 DESC;je Bestimmungsland (
kunden
)SELECT Land,
sum(Anzahl * Einzelpreis) "Umsatz pro Land"
FROM kunden
INNER JOIN bestellungen ON KundenId = KundenNr
INNER JOIN bestellungendetails ON BestellId = BestellNr
INNER JOIN artikel ON ArtikelNr = ArtikelID
GROUP BY Land
ORDER BY 2 DESC;alternativ:
SELECT Land,
sum(Anzahl * Einzelpreis) "Umsatz pro Land"
FROM kunden, bestellungen, bestellungendetails, artikel
WHERE KundenId = KundenNr
AND BestellId = BestellNr
AND ArtikelNr = ArtikelID
GROUP BY Land
ORDER BY 2 DESC;je Artikelkategorie (
Kategoriename
)SELECT Kategoriename,
sum(Anzahl * Einzelpreis) "Umsatz je Artikelkategorie"
FROM bestellungendetails
INNER JOIN artikel ON ArtikelNr = ArtikelID
INNER JOIN artikelkategorien ON KategorieNr = KategorieId
GROUP BY Kategoriename
ORDER BY 2 DESC;alternativ:
SELECT Kategoriename,
sum(Anzahl * Einzelpreis) "Umsatz je Artikelkategorie"
FROM bestellungendetails, artikel, artikelkategorien
WHERE ArtikelNr = ArtikelID
AND KategorieNr = KategorieId
GROUP BY Kategoriename
ORDER BY 2 DESC;je Verkäufer (Name aus Personal)
nach Herkunftsland (aus
lieferanten
)SELECT Land,
sum(Anzahl * Einzelpreis) "Umsatz je Land Zulieferer"
FROM lieferanten
INNER JOIN artikel on LieferantenId = LieferantenNr
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
GROUP BY Land
ORDER BY 2 DESC;alternativ:
SELECT Land,
sum(Anzahl * Einzelpreis) "Umsatz je Land Zulieferer"
FROM lieferanten, artikel, bestellungendetails
WHERE LieferantenId = LieferantenNr
AND ArtikelId = ArtikelNr
GROUP BY Land
ORDER BY 2 DESC;
4
Geben Sie den Umsatz der verschiedenen Artikel der Kategorien Süßwaren
aus, nach Umsatz aufsteigend sortiert.
SELECT Kategoriename, Artikelname,
sum(Anzahl * Einzelpreis) "Umsatz je SüßwarenArtikel"
FROM artikelkategorien
INNER JOIN artikel on KategorieId = KategorieNr
INNER JOIN bestellungendetails ON ArtikelId = ArtikelNr
WHERE Kategoriename LIKE "%waren"
GROUP BY Artikelname, Kategoriename
ORDER BY 3;
alternativ:
SELECT Kategoriename, Artikelname,
sum(Anzahl * Einzelpreis) "Umsatz je SüßwarenArtikel"
FROM artikelkategorien, artikel, bestellungendetails
WHERE KategorieId = KategorieNr
AND ArtikelId = ArtikelNr
AND Kategoriename LIKE "%waren"
GROUP BY Artikelname, Kategoriename
ORDER BY 3;
5
Geben Sie die Kunden (Firma
, Ort
, Land
) an und dazu die Gesamtbestellmenge für das leckere Sasquatch Ale
.
SELECT Firma, Ort, Land, Artikelname,
sum(Anzahl) "Gesamtbestellmenge"
FROM kunden
INNER JOIN bestellungen on KundenId = KundenNr
INNER JOIN bestellungendetails ON BestellId = BestellNr
INNER JOIN artikel on ArtikelNr = ArtikelId
WHERE Artikelname LIKE "%sasq%"
GROUP BY Firma, Ort, Land, Artikelname
ORDER BY 5 DESC;
alternativ:
SELECT Firma, Ort, Land, Artikelname,
sum(Anzahl) "Gesamtbestellmenge"
FROM kunden, bestellungen, bestellungendetails, artikel
WHERE KundenId = KundenNr
AND BestellId = BestellNr
AND ArtikelNr = ArtikelId
AND Artikelname LIKE "%sasq%"
GROUP BY Firma, Ort, Land, Artikelname
ORDER BY 5 DESC;
6
Geben Sie den Getränke-Umsatz aus, den wir in den einzelnen Ländern erzielt haben. (Also je Land
)
SELECT Land, Kategoriename,
sum(Anzahl * Einzelpreis) "GetränkeUmsatz"
FROM kunden
INNER JOIN bestellungen ON KundenId = KundenNr
INNER JOIN bestellungendetails ON BestellId = BestellNr
INNER JOIN artikel ON ArtikelNr = ArtikelId
INNER JOIN artikelkategorien ON KategorieNr = KategorieId
WHERE Kategoriename LIKE "%Getränke%"
GROUP BY Land, Kategoriename
ORDER BY 3 DESC;
alternativ:
SELECT Land, Kategoriename,
sum(Anzahl * Einzelpreis) "GetränkeUmsatz"
FROM kunden, bestellungen, bestellungendetails, artikel, artikelkategorien
WHERE KundenId = KundenNr
AND BestellId = BestellNr
AND ArtikelNr = ArtikelId
AND KategorieNr = KategorieId
AND Kategoriename LIKE "%Getränke%"
GROUP BY Land, Kategoriename
ORDER BY 3 DESC;
7
Geben Sie den Umsatz pro Jahr aus.
SELECT year(Bestelldatum),
sum(Anzahl * Einzelpreis) "Umsatz pro Jahr"
FROM bestellungen
INNER JOIN bestellungendetails ON BestellId = BestellNr
INNER JOIN artikel ON ArtikelNr = ArtikelId
GROUP BY year(Bestelldatum);
alternativ:
SELECT year(Bestelldatum),
sum(Anzahl * Einzelpreis) "Umsatz pro Jahr"
FROM bestellungen, bestellungendetails, artikel
WHERE BestellId = BestellNr
AND ArtikelNr = ArtikelId
GROUP BY year(Bestelldatum);
8
Welchen Umsatz machten wir mit Auslaufartikeln
?
SELECT Artikelname,
(Anzahl * Einzelpreis) "Umsatz Auslaufartikel"
FROM artikel
INNER JOIN bestellungendetails on ArtikelID = ArtikelNr
WHERE Auslaufartikel=1
GROUP BY Artikelname
ORDER BY 2;
alternativ:
SELECT Artikelname,
(Anzahl * Einzelpreis) "Umsatz Auslaufartikel"
FROM artikel, bestellungendetails
WHERE ArtikelID = ArtikelNr
AND Auslaufartikel=1
GROUP BY Artikelname
ORDER BY 2;
9
Geben Sie den Gummibärenverbrauch (bestellte Mengen) je Land
pro Jahr aus!
SELECT Artikelname, Land,
(Anzahl * Einzelpreis) "Umsatz je Land",
year(Bestelldatum) "Jahr"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
INNER JOIN kunden on KundenNr = KundenId
WHERE Artikelname LIKE "%Gummi%"
GROUP BY Artikelname, Land;
10
Wieviel Umsatz machten wir im 2. Quartal 2003?
SELECT
sum(Anzahl * Einzelpreis) "Umsatz 2. Quartal"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
WHERE Bestelldatum BETWEEN "2003-30-06" AND "2004-01-01";
Danger:
SELECT
sum(Anzahl * Einzelpreis) "Umsatz 2. Quartal"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
WHERE Bestelldatum BETWEEN "2003-07-01" AND "2003-12-31";
alternativ
SELECT
sum(Anzahl * Einzelpreis) "Umsatz 2. Quartal"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
WHERE year(Bestelldatum) = 2003
AND month(Bestelldatum) > 6;
alternativ
SELECT
sum(Anzahl * Einzelpreis) "Umsatz 2. Quartal"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
WHERE Bestelldatum > "2003-06-30"
AND Bestelldatum < "2004-01-01";
Danger:
SELECT
sum(Anzahl * Einzelpreis) "Umsatz 2. Quartal"
FROM artikel
INNER JOIN bestellungendetails on ArtikelId = ArtikelNr
INNER JOIN bestellungen on BestellNr = BestellID
WHERE Bestelldatum >= "2003-07-01"
AND Bestelldatum <= "2003-12-31";