Informationsverarbeitung II
Dienstag, 8. April 2008
Aufgabe 3 vom 02.04.2008


Als Grundlage für diese Aufgabe dient die Abfrage:

SELECT Kunde.Nr, Kunde.Nachname, COUNT(Auftrag.Nr)
FROM Kunde, Auftrag
WHERE Kunde.Nr = Auftrag.Kundennummer
GROUP BY Kunde.Nr
ORDER BY Kunde.Nr

1. Dieser Befehl sollte nun um den Umsatz pro Kunde erweitert werden ohne dass sich die Anzahl der Aufträge verändert.

Hierzu reicht es nicht aus den Befehl "SUM(Auftragspos.Menge*Buch.Preis)" einzufügen, sondern auch der Befehl "COUNT(Auftrag.Nr)" gehört zu "COUNT(DISTINCT Auftrag.Nr)" erweitert, damit jede Auftragsnummer nur einmal gezählt wird.

Die Lösung lautet also:

SELECT Kunde.Nr, Kunde.Nachname, COUNT(DISTINCT Auftrag.Nr) as "Anzahl Aufträge", SUM(Auftragspos.Menge*Buch.Preis) as "Umsatz/Kunde"
FROM Kunde, Auftrag, Auftragspos, Buch
WHERE Kunde.Nr = Auftrag.Kundennummer
AND Auftrag.Nr = Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer = Buch.Nr
GROUP BY Kunde.Nr
ORDER BY Kunde.Nr

2. Als nächstes sollte die Verteilung der Aufträge über die Zeit (Jahre) ermittelt werden, ohne dass Berechnungen durchgeführt werden.

Gründsätzlich reicht dazu aus den Befehl:

SELECT Nr, Datum
FROM Auftrag
ORDER by Datum

einzugeben, jedoch werden hier nur die ersten 500 Aufträge angezeigt. Also fügen wir zu der Abfrage den Befehl "WHERE YEAR(Datum) = "Jahr"" hinzu, um die Aufträge eines bestimmten Jahres zu ermitteln.

Die Lösung lautet (z.B:für 2001):

SELECT Nr, Datum
FROM Auftrag
WHERE YEAR(Datum) = "2001"
ORDER by Datum

3. Jetzt sollte die Lösung der 1.Aufgabenstellung so umgeformt werden dass wir nur die Daten für einen sinnvollen Zeitraum erhalten.

Hierzu habe ich mich für das erste Quartal im Jahr 2000 entschieden und habe die Abfrage wie folgt durchgeführt:

SELECT Kunde.Nr, Kunde.Nachname, COUNT(DISTINCT Auftrag.Nr) as "Anzahl Aufträge", SUM(Auftragspos.Menge*Buch.Preis) as "Umsatz/Kunde"
FROM Kunde, Auftrag, Auftragspos, Buch
WHERE Kunde.Nr = Auftrag.Kundennummer
AND Auftrag.Nr = Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer = Buch.Nr
AND Auftrag.Datum BETWEEN "2000-01-01" AND "2000-03-31"
GROUP BY Kunde.Nr
ORDER BY Kunde.Nr

Als Ergebnis bekomme ich somit die Anzahl der Aufträge und den Umsatz pro Kunden im ersten Quartal.

4. Zuletzt sollte noch ein weiterer Filter in die Abfrage eingefügt werden der sich an der durchschnittlichen Anzahl der Aufträge orientiert.

Hierzu habe ich die Berechnung "COUNT(DISTINCT Auftrag.Nr)/3" hinzugefügt um die durchschnittliche Anzahl an Aufträgen pro Monat im ersten Quartal 2000 zu ermitteln.

Die Lösung lautet somit:

SELECT Kunde.Nr, Kunde.Nachname, COUNT(DISTINCT Auftrag.Nr) as "Anzahl Aufträge", SUM(Auftragspos.Menge*Buch.Preis) as "Umsatz/Kunde", COUNT(DISTINCT Auftrag.Nr)/3 as "durchschnittliche monatliche Aufträge"
FROM Kunde, Auftrag, Auftragspos, Buch
WHERE Kunde.Nr = Auftrag.Kundennummer
AND Auftrag.Nr = Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer = Buch.Nr
AND Auftrag.Datum BETWEEN "2000-01-01" AND "2000-03-31"
GROUP BY Kunde.Nr
ORDER BY Kunde.Nr

... comment

Online for 6109 days
Last update: 2008.06.10, 11:27
status
You're not logged in ... login
menu
... home
... topics
... galleries

... ::collabor:: home
search
 
calendar
April 2008
Mo
Di
Mi
Do
Fr
Sa
So
 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 9 
10
11
12
13
14
16
17
18
19
20
21
23
24
25
26
27
28
30
 
 
 
 
 
recent updates
Beispielklausur 10.06.2008
Beispielklausur Aufgaben 1-3 beispielklausur (xls,...
by Thomas.Penzinger.Uni-Linz (2008.06.10, 11:27)
5.Hausübung: Schulbuchhandel...
Aufgabe: eBusiness ist ein Begriff, der dem Pluralismus...
by Thomas.Penzinger.Uni-Linz (2008.05.27, 09:55)
Tutorium 20.05.2008
Im heutigen Tutorium ging es darum die Ergebnisse einer...
by Thomas.Penzinger.Uni-Linz (2008.05.21, 10:33)
Kundensuche nach Vornamen
Kundensuche nach Vornamen
by Thomas.Penzinger.Uni-Linz (2008.04.29, 12:46)
Auftragssuche nach Kundennummer
Auftragssuche nach Kundennummer
by Thomas.Penzinger.Uni-Linz (2008.04.29, 12:26)

xml version of this page

made with antville