Informationsverarbeitung II |
... newer stories
Dienstag, 8. April 2008
Aufgabe 3 vom 02.04.2008
Thomas.Penzinger.Uni-Linz, 20:37h
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 ... link (0 comments) ... comment ... older stories
|
Online for 6109 days
Last update: 2008.06.10, 11:27 status
You're not logged in ... login
menu
search
calendar
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
Kunde by Thomas.Penzinger.Uni-Linz (2008.04.29, 12:46) Auftragssuche nach Kundennummer
Auftr by Thomas.Penzinger.Uni-Linz (2008.04.29, 12:26) |