Herzlich Willkommen auf Manuela`s Lernblog
Dienstag, 8. April 2008
3. Hausübung aus IV II
Nach langem herumprobieren veröffentliche ich nun meine 3. Hausübung.

1. Arbeitsschritt
Es sollte der Gesamtumsatz eines jeden Kunden ermittelt werden, ohne dass sich die Anzahl der Aufträge verändert

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

Diese liefert jedoch nicht das gewünschte Ergebnis! Meine Vermutung ist, dass es durch diese Veränderung dazu kommt, dass für jedes bestellte Stück ein Auftrag gezählt wird.

Erweitert man diese Abfrage jedoch zu folgender:

SELECT Kunde.Nr, Kunde.Vorname, COUNT(DISTINCT(Auftrag.Nr)) AS Auftragsanzahl, SUM(Auftragspos.Menge*Buch.Preis) AS Umsatz FROM Kunde, Auftrag, Auftragspos, Buch WHERE Kunde.Nr = Auftrag.Kundennummer AND Auftrag.Nr = Auftragspos.Auftragsnummer AND Buch.Nr = Auftragspos.Buchnummer GROUP BY Kunde.Nr ORDER BY Kunde.Nr

.. so ändert sich die Anzahl der Aufträge pro Kunde zur Ausgangssituation nicht. Wobei die Ausgangssituation gestimmt hat - diese habe ich mittels einfacher Abfragen kontrolliert. Ich hab mir alle Aufträge eines Kunden anzeigen lassen.

Ich muss gestehen, auf die Kombination Count Distinct wäre ich ohne Hilfe meiner Kollegen nicht gekommen. Jetzt scheint es für mich jedoch als durchaus sinnvoll, da dies bewirkt, dass jede Auftragsnummer nur einmal gezählt wird.


2. Arbeitsschritt:
In einem weiteren Schritt habe ich versucht, die Aufteilung der Aufträge auf die Jahre herauszufinden. Dies habe ich anhand der Funktionen MIN und MAX probiert.

SELECT Kunde.Nr, Kunde.Nachname, COUNT(DISTINCT(Auftrag.Nr)) AS Auftragsanzahl, MAX(YEAR(Auftrag.Datum))-MIN(YEAR(Auftrag.Datum)) AS Verteilung, SUM(Auftragspos.Menge*Buch.Preis) AS Umsatz FROM Kunde, Auftrag, Auftragspos, Buch WHERE Kunde.Nr = Auftrag.Kundennummer AND Auftrag.Nr = Auftragspos.Auftragsnummer AND Buch.Nr = Auftragspos.Buchnummer GROUP BY Kunde.Nr ORDER BY Kunde.Nr

Es liefert ein Ergebnis. Laut diesem Ergebnis gibt es aber nur einen Kunden, der in 2 verschiedenen Jahren eingekauft hat. Alle anderen müssten laut dieser Abfrage im Jahr 2000 eingekauft haben.

Die 3. Aufgabe kann ich bis dato nicht lösen. Hätte versucht die Einteilung durch ein GROUP BY MONTH(Auftrag.Datum) zu filtern, was aber zu einem falschen Ergebnis führt.

... link (0 comments)   ... comment


Online for 6104 days
Last update: 2008.06.17, 21:35
status
You're not logged in ... login
menu
... home
... topics
... galleries

... ::collabor:: home
search
 
calendar
April 2008
Mo
Di
Mi
Do
Fr
Sa
So
 
 2 
 3 
 4 
 5 
 6 
 7 
 9 
10
11
12
13
14
16
17
18
19
20
21
23
24
25
26
27
28
29
30
 
 
 
 
 
recent updates
6. Hausübung
Zum Schluss dieser LVA werde ich nun versuchen, die...
by Manuela.Schoeppl.Uni-Linz (2008.06.17, 21:35)
Beschreibung der Befehle...
Will man alle Daten einer Tabelle, so führt man...
by Manuela.Schoeppl.Uni-Linz (2008.06.15, 12:27)
Erster Versuch Probeklausur
Anbei ein erster Versuch der Probeklausur: /static/0555813/files/probeklausur.xls
by Manuela.Schoeppl.Uni-Linz (2008.06.10, 21:30)
vielleicht noch ein bisschen...
vielleicht noch ein bisschen deine Gedanken zu dem...
by patrick.fuehrer.Uni-Linz (2008.06.08, 18:51)
Tutorium 3.6. Gruppe...
UML: Beschreibung einer Software keine Programmiersprache,...
by Manuela.Schoeppl.Uni-Linz (2008.06.03, 12:33)

xml version of this page

made with antville