Freitag, 31. Oktober 2008
Ausgewählte SQL-Abfragen
Für die Umstrukturierung des Buchhandelsgeschäfts hat der Geschäftsführer bereits eine Maßnahme getroffen und einen neuen Mitarbeiter, Hr. Schwarz, eingestellt. Hr. Schwarz war bis vor kurzem für ein namhaftes Buchhandelsgeschäft als Verkäufer und auch als Einkäufer tätig und besitzt somit über ein fundiertes Wissen in der Branche. Da er vor kurzem einen Einstiegskurs für SQL besucht hat, versucht er nun seine erlernten Kenntnisse anzuwenden.


Herr Schwarz möchte mit der folgenden Abfrage herausfinden, welche Verlage und somit Lieferanten in der Datenbank gelistet sind.

SELECT DISTINCT Verlag.Name
FROM Verlag



Als nächstes möchte Hr. Schwarz wissen, auf welche Verlage der aktuelle Lagerbestandswert entfällt.

SELECT Verlag.Name AS Verlagname,
SUM(Buch.Bestand*Buch.Preis) AS "Bestandswert"
FROM Verlag, Buch
WHERE Verlag.Kurzbezeichnung=Buch.Verlag
GROUP BY Verlag.Name
ORDER BY Bestandswert DESC



Herr Schwarz hat bei der vorherigen Abfrage festgestellt, dass die Oesterreichische BUNDESVERLAG Ges.m.b.H., Kurzbezeichnung "oev", einen sehr hohen Bestandswert am Lager ausweist und möchte deshalb wissen, welche Bücher des Verlages sich zu welchem Preis auf Lager befinden.

SELECT Buch.Titel, Buch.Preis
FROM Buch
WHERE Buch.Verlag LIKE 'oev'
ORDER BY Buch.Preis DESC



Da Herr Schwarz schon einige Informationen über den Lieferantenstamm gewonnen hat, beschließt er nun den Kundenstamm zu analysieren. Zu Beginn stellt sich für ihn die Frage - "Mit welchen Kunden macht das Unternehmen den größten Umsatz?"

SELECT Kunde.Nachname, Kunde.Vorname,
Kunde.Nr, SUM(Buch.Preis*Auftragspos.Menge) AS Gesamtumsatz
FROM Kunde, Auftrag, Auftragspos, Buch
WHERE Kunde.Nr=Auftrag.Kundennummer
AND Auftrag.Nr=Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer=Buch.Nr
GROUP BY Kunde.Nr



Herr Schwarz kommt seinem Ziel, einen kleinen Überblick über das Unternehmen zu bekommen, immer näher. Als nächstes ist er noch daran interessiert, wie sich der Gesamtumsatz auf die einzelnen Bundeländer verteilt und führt deshalb eine weitere Abfrage durch.

SELECT PLZ.Region
AS Bundesland, SUM(Auftragspos.Menge*Buch.Preis)
AS Gesamtumsatz
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch
WHERE PLZ.Plz=Kunde.Plz
AND Kunde.Nr=Auftrag.Kundennummer
AND Auftrag.Nr=Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer=Buch.Nr
GROUP BY Bundesland
ORDER BY Gesamtumsatz DESC



Herr Schwarz weiß aus eigener Erfahrung, dass es zeitsparender und auch kostengünstiger ist, Bestellungen bei einer kleinen Anzahl von Lieferanten abzuwickeln. Darum legt er einen Ausdruck der folgenden Abfrage der Geschäftsführung vor. Die Liste beinhaltet jene Verlage, von denen ein Bestandswert von unter 10000 Euro auf Lager liegt. Herr Schwarz möchte, wenn von der Geschäftsführung genehmigt, die betroffenen Verlage aus der Lieferantenliste streichen.

SELECT Verlag.Name AS Verlagname,
SUM(Buch.Bestand*Buch.Preis) AS 'Bestandswert'
FROM Verlag, Buch
WHERE Verlag.Kurzbezeichnung=Buch.Verlag
GROUP BY Verlag.Name
HAVING Bestandswert<10000
ORDER BY Bestandswert DESC

Permalink (4 Kommentare)   Kommentieren