Dienstag, 4. November 2008
Bei unserer 2. Aufgabe mussten wir unser Wissen über SQL beweisen. Ziel war es sinnvolle Abfragen bezogen auf unsere Buchhandlung durchzuführen, welche unterschiedliche Attribute aufweisen sollten. Unten angeführt finden Sie meine Lösungen:


1. In dieser Abfrage soll der regionale Umsatz angezeigt werden. Es soll somit die Region und eine Spalte mit dem Titel Umsatz angegeben sein.


select PLZ.Region, sum(Buch.Preis*Auftragspos.Menge)
as 'Umsatz'
from PLZ, Buch, Auftragspos, Verlag
where Buch.Nr=Auftragspos.Buchnummer and PLZ.Plz=Verlag.Plz
and Verlag.Kurzbezeichnung=Buch.Verlag
group by Region



2. Diese Abfrage beinhaltet eine Auflistung aller Bücher, deren Nummer und Bestandsmenge sowie den Wert den diese Bücher haben, dieser soll als Lagerwert bezeichnet werden. Die Liste ist aufsteigend nach der Nummer der Bücher zu ordnen.



select Buch.Nr, Buch.Titel, Buch.Bestand,
sum(Buch.Bestand*Buch.Preis) as 'Lagerwert'
from Buch
group by Buch.Titel
order by Buch.Nr ASC



3. Diese Abfrage zeigt eine Auflistung aller Autoren und Bücher, in deren Titel das Wort Englisch oder Wörterbuch vorkommt. Jeder Autor wird dabei nur einmal gezählt und die Liste wird absteigend sortiert.



select distinct Buch.Autor, Buch.Titel
from Buch
where Buch.Titel like '%Englisch%' or '%Wörterbuch%'
order by Buch.Autor DESC



4. In dieser Abfrage soll der durchschnittliche Umsatz nach Verlag berechnet werden. Dieser soll in einer Spalte mit dem Titel Umsatz angegeben werden.



select Verlag.Name, avg (Buch.Preis*Auftragspos.Menge)
as 'Umsatz'
from Verlag, Buch, Auftragspos
where Buch.Nr=Auftragspos.Buchnummer and
Verlag.Kurzbezeichnung=Buch.Verlag
group by Verlag.Name



5. Die Abfrage zeigt eine Auflistung aller Verlage, Postleitzahlen und Orte der jeweiligen Verlage. Diese soll Aufsteigend nach dem Verlag sortiert sein und jeder Verlag soll nur einmal angegeben werden.



select distinct Verlag.Name, Verlag.Plz, PLZ.Ort
from Verlag, PLZ
where PLZ.Plz=Verlag.Plz
order by Verlag.Name ASC



6. Es sollen alle Kunden (Kundennummer, Vor- und Nachname) angegeben werden, welche bereits mehr als 1500 Produkte bei uns bestellt haben.



select Auftrag.Kundennummer, Kunde. Vorname, Kunde.Nachname,
sum(Auftragspos.Menge) as 'Bestellmenge'
from Kunde, Auftragspos, Auftrag
where Kunde.Nr=Auftrag.Kundennummer and
Auftrag.Nr=Auftragspos.Auftragsnummer
group by Auftrag.Kundennummer
having Bestellmenge>1500