Mittwoch, 29. Oktober 2008
Nützliche SQL Abfragen für den Buchhandel
Mit den folgenden Befehlen habe ich bereits versucht, wichtige Daten für die Veränderung des Buchhandels herauszufiltern:

In meiner ersten Abfrage werden alle Bücher angezeigt, von denen weniger als 5 Stück verkauft wurden. So sollen Ladenhüter ausgeforscht werden und der Buchhandel kann darüber nachdenken, diese Bücher aus dem Sortiment zu nehmen. Der Befehl dazu lautet wie folgt:

SELECT DISTINCT Buch.Titel, Buch.Verlag, Verlag.Name,
SUM(Auftragspos.Menge) AS Menge
FROM Buch, Auftragspos, Verlag
WHERE Buch.Nr=Auftragspos.Buchnummer
AND Buch.Verlag=Verlag.Kurzbezeichnung
GROUP BY Buch.Titel
HAVING Menge<5



Um speziell auf die kundenreichsten Bereiche Oberösterreichs eingehen zu können und gezielt in diesen Orten neue Vertriebswege zu finden, soll die folgende Abfrage die Anzahl der Kunden in den Städten und Dörfern Oberösterreichs herausfiltern:

SELECT COUNT(Kunde.Nachname) AS Kundenanzahl, PLZ.Plz, PLZ.Ort
FROM PLZ, Kunde
WHERE Kunde.Plz=PLZ.Plz
AND PLZ.Plz LIKE '4%'
GROUP BY PLZ.Plz



Gesucht wird nach den Umsätzen der verschiedenen Verlage. Der Buchhandel bezieht vermutlich die meisten Bücher von den umsatzstärksten Verlagen – vielleicht können durch die große Menge noch bessere Konditionen ausgehandelt werden?

SELECT Verlag.Name, Verlag.Plz, PLZ.Ort,
SUM(Auftragspos.Menge)*Buch.Preis AS Umsatz
FROM Verlag, Buch, Auftragspos, PLZ
WHERE Verlag.Plz=PLZ.Plz
AND Verlag.Kurzbezeichnung=Buch.Verlag
AND Buch.Nr=Auftragspos.Buchnummer
GROUP BY Verlag.Name
ORDER BY Umsatz DESC



Diese Abfrage führt zu einer Liste der Autoren mit dem Anfangsbuchstaben K und ihrem zugehörigen Verlag:

SELECT DISTINCT Buch.Autor, Verlag.Name
FROM Verlag, Buch
WHERE Verlag.Kurzbezeichnung=Buch.Verlag
AND Buch.Autor LIKE 'K%'
ORDER BY Verlag.Name ASC



Welche Kunden haben wie viele Bücher gekauft? Besonders treue Kunden könnten mit speziellen Angeboten belohnt werden.

SELECT Kunde.*, PLZ.Ort,
SUM(Auftragspos.Menge) AS 'Verkaufte Bücher'
FROM PLZ, Kunde, Auftrag, Auftragspos
WHERE Kunde.Plz=PLZ.Plz
AND Kunde.Nr=Auftrag.Kundennummer
AND Auftrag.Nr=Auftragspos.Auftragsnummer
GROUP BY Kunde.Nachname



Bei meiner letzten Abfrage soll sich der Buchhandel darüber Gedanken machen, wie viele Kunden er in den einzelnen Bundesländern hat und wie viel Umsatz er in den jeweiligen Ländern macht.

SELECT COUNT(Kunde.Nr) AS 'Anzahl der Kunden',
SUM(Auftragspos.Menge)*Buch.Preis AS Umsatz, PLZ.Region
FROM Kunde, PLZ, Verlag, Buch, Auftragspos
WHERE Kunde.Plz=PLZ.Plz
AND PLZ.Plz=Verlag.Plz
AND Verlag.Kurzbezeichnung=Buch.Verlag
AND Buch.Nr=Auftragspos.Buchnummer
GROUP BY PLZ.Region

Permalink (5 Kommentare)   Kommentieren