Skip to main content

2 a)


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;

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;

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;

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;

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;

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;

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

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;

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