IV2-Weblog |
... newer stories
Donnerstag, 29. März 2007
SQL-Hausübung
Willi.Angerer.Uni-Linz, 00:13h
Kundenanalyse: stellen Sie fest, wer Ihre "guten Kunden" sind, welche Art der Produkte sie kaufen, wo sie angesiedelt sind, u.a.m.
Integrieren Sie die durchgeführten Abfragen in Ihrem Weblog, kommenieren Sie die Abfragen und die Ergebnisse. Machen Sie ein Resumee. Achten Sie darauf, dass keine Identen Abfragen zwischen den Beiträgen mit gleichem Analyseziel existieren, verweisen Sie ggfs darauf. Da ich anfangs ein paar Schwierigkeiten mit dem group by-Befehl hatte, werde ich die Bearbeitung/Lösung der Aufgabe in 3 Teile untergliedern. Bei Teil 1 gehe ich davon aus, dass der beste Kunde jener ist, der die beste Auftragsposition in seinem Auftrag hat. Teil 2 setzt voraus, dass der beste Kunde jener ist, der den besten Einzelauftrag vergibt. Teil 3 schließlich impliziert, dass der beste Kunde jener ist, der uns den größtmöglichen Umsatz aus der Summe seiner Einzelaufträge ermöglicht. 1. Teil: Abfrage der besten Auftragspositionen: Select Kunde.Vorname, Kunde.Nachname, PLZ.Plz, Buch.Titel, Buch.Verlag, Auftragspos.Nr as 'Auftragspositionsnummer', Buch.Preis, Auftragspos.Menge, Buch.Preis*Auftragspos.Menge as 'Umsatz' from Kunde, Auftrag, Auftragspos, Buch, PLZ where PLZ.Plz=Kunde.Plz and Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr=Auftragspos.Auftragsnummer and Auftragspos.Buchnummer=Buch.Nr group by Auftragspos.Nr order by 9 desc Zur Erklärung der Abfrage: Begonnen wird wie in jeder SQL-Abfrage mit dem Befehl Select. Danach folgen jene Felder die als Ergebnis angezeigt werden sollen. Eine Besonderheit stellt hier das Feld Umsatz dar. Es entsteht indem man den Buchpreis mit der Auftragsmenge multipliziert. Zur Beschönigung der Ausgabe habe ich das Feld "Buch.Preis*Auftragspos.Menge" unter Zuhilfenahme des Befehls as in "Umsatz" umbenannt. Das selbe gilt sinngemäß für die Auftragspositionsnummer Danach folgt der Befehl from der die Tabellen aufzählt auf die die Select-Anweisung ausgeführt wird. Weiters folgt der Befehl where dem die Bedingungen - in diesem Fall die Verbindung der Tabellen - folgen, die mit dem Befehl and verbunden werden. Danach folgt der Befehl group by, der das Kriterium - hier die Auftragspositionsnummer - für die Gruppierung festlegt. Schließlich folgt noch die absteigende Ordnung nach dem Umsatz, was mit den Befehlen order by und desc realisiert wird.
Zur Erklärung der Ergebnisse: Als erstes werden Vor- und Nachname angezeigt, damit der Abfrager weiß um wen es sich handelt. In der dritten Spalte finden sich die Postleitzahlen, woraus der Abfrager erkennen kann wo die Kunden angesiedelt sind. Spalte vier enthält die Titel der gekauften Produkte, damit der Abfrager sieht welche Art von Produkten gekauft werden. In der fünften Spalte folgt der jeweils zugehörige Verlag, damit der Abfrager erfährt von welchem Verlag bestellt wird. Spalte sechs enthält die Auftragspositionsnummer, unter welcher die beste Auftragsposition zu finden ist. Die Spalten sieben und acht enthalten Preis und Menge um eine detailliertere Betrachtungsweise darauf zu ermöglichen, ob sich die höchsten Umsätze durch besonders hohe Preise oder durch hohe verkaufte Mengen zusammensetzen. In Spalte neun folgt schließlich der Umsatz in absteigender Reihenfolge, dem eigentlichen Kern der Abfrage. 2. Teil: Abfrage der besten Aufträge: Select Kunde.Vorname, Kunde.Nachname, PLZ.Plz, Auftrag.Nr as 'Auftragsnummer', Buch.Preis*Auftragspos.Menge as 'Umsatz' from Kunde, Auftrag, Auftragspos, Buch, PLZ where PLZ.Plz=Kunde.Plz and Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr=Auftragspos.Auftragsnummer and Auftragspos.Buchnummer=Buch.Nr group by Auftrag.Nr order by 5 desc Zur Erklärung der Abfrage: Die Abfrage ähnelt der ersten Abfrage, im eigentlichen ist sie nur ein wenig "schlanker", bzw. wurde die Auftragspositionsnummer durch die Auftragsnummer ersetzt. Der einzige erwähnenswerte Unterschied ist der Befehl sum(), welcher die Produkte der Auftragspositionen aufsummiert und so den Umsatz pro Auftrag liefert. Weiters wurde die Gruppierung von der Auftragspositionsnummer zur Auftragsnummer geändert.
Zur Erklärung der Ergebnisse: Die Spalten 1 bis 3 sind im Vergleich zur vorigen Abfrage gleich geblieben, Spalte 4 enthält nun die Auftragsnummer und Spalte 5 den Umsatz des jeweiligen Auftrages. 3. Teil: Abfrage der besten Kunden: Select Kunde.Nr as 'Kundennummer', Kunde.Vorname, Kunde.Nachname, PLZ.Plz, Buch.Preis*Auftragspos.Menge as 'Umsatz' from Kunde, Auftrag, Auftragspos, Buch, PLZ where PLZ.Plz=Kunde.Plz and Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr=Auftragspos.Auftragsnummer and Auftragspos.Buchnummer=Buch.Nr group by Kunde.Nr order by 5 desc Zur Erklärung der Abfrage: Im Vergleich zur letzten Abfrage wurde hier lediglich die Auftragsnummer durch die Kundennummer ersetzt und nach der Kundennummer gruppiert.
Zur Erklärung der Ergebnisse: Spalte 1 ist nun die Kundennummer, die Spalten 2, 3 und 4 entsprechen den Spalten 1, 2 und 3 der vorigen Abfrage und die 5. Spalte enthält wieder den Umsatz, der diesmal dem Gesamtumsatz pro Kunde entspricht. Resumee: Ich könnte mir vorstellen, dass es den Geschäftsführer dieses Unternehmens auch noch interessieren würde, in welchem Ort oder in welcher Region das Unternehmen die meisten Umsatze macht. Diese Abfragen werde ich aber nicht mehr erstellen, da meine Kollegen ja auch noch welche erstellen müssen und ich ihnen nicht die Ideen wegnehmen will, beziehungsweise würde die regionale Abfrage wohl schon eher im Bereich der 4. Aufgabe liegen. Bei der Gelegenheit möchte ich gleich auf meine Kollegen verweisen:
Bis 18.04.07 sollte sich in den Blogs der Genannten ebenfalls eine Lösung der oben genannten Aufgabe befinden. ... link (2 comments) ... comment ... older stories
|
Online for 6498 days
Last update: 2007.06.25, 12:23 status
You're not logged in ... login
menu
search
calendar
recent updates
Dropdown
Gruppierungskriterium: Kunde.Nr Auftrag.Nr Auf by Willi.Angerer.Uni-Linz (2007.06.25, 12:19) Hallo!
Um die Begriffe...
Hallo! Um die Begriffe Informationsgehalt und Breitenwirkung... by Renate.Steinhuber.Uni-Linz (2007.05.23, 09:38) |