Home : Topics : IV II SS 2008 Mittendorfer
3. Hausübung
Daniel.HELLEIS.Uni-Linz, 22:54h
Die Trainings-Datenbank wurde am 3. April überarbeitet. In der Tabelle "Auftrag" befanden sich ca. 1600 Datensätze (Tupel), die keine Entsprechung in der Tabelle "Auftragspos" hatten. Diese Tupel wurden entfernt, da es dafür keine sinnvolle Interpretation aus betriebswirtschaftlicher Sicht gab.
Ausgehend von folgender Abfrage auf SQL.IDV.EDU
SELECT Kunde.Nr, Kunde.Nachname, COUNT(Auftrag.Nr)
FROM Kunde, Auftrag
WHERE Kunde.Nr = Auftrag.Kundennummer
GROUP BY Kunde.Nr
ORDER BY Kunde.Nr
sollten Sie schrittweise eine Auswertung entwicklen, die betriebswirtschaftlich wertvolle Aussagen produziert. Gehen Sie wie folgt vor:
Ergänzen sie obenstehende Abfrage um den Umsatz (Preis * Menge) je Kunde. Achten Sie darauf, dass die Anzahl der getätigten Aufträge "COUNT(Auftrag.Nr)" korrekt ist, bzw. im Vergleich zur Ausgangssituation unverändert.
1)
SELECT Kunde.Nr, Kunde.Nachname, sum(Buch.Preis*Auftragspos.Menge) as Umsatz
FROM Kunde, Buch, Auftragspos, Auftrag
WHERE Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr= Auftragspos.Auftragsnummer and Auftragspos.Buchnummer =Buch.Nr
group by Kunde.Nr
aber da fehlen jetzt leider die Anzahl der Aufträge!?
SELECT Kunde.Nr, Kunde.Nachname, sum(Buch.Preis*Auftragspos.Menge) as Umsatz, count(distinct Auftrag.Nr) FROM Kunde, Buch, Auftragspos, Auftrag WHERE Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr= Auftragspos.Auftragsnummer and Auftragspos.Buchnummer =Buch.Nr group by Kunde.Nr
Verwende den distinct Befehl deshalb, damit nur 1x gezählt wird und nicht in jedem Feld ...
Ermitteln Sie in einem Weiteren Schritt die Verteilung der Aufträge über die Zeit (Jahre), OHNE dass dabei Auswertungen (Anzahl der Aufträge bzw. Auftragssummen) ermittelt werden.
Select *
from Auftrag
where Auftrag.Kundennummer = 2
Gibt an wieviele Aufträge Kundennummer 2 hat
Select * from Auftrag group by Auftrag.Nr order by Auftrag.Kundennummer asc
Gibt alle Aufträge bzw. die dazupassende Jahreszahl dazu ...
Grenzen Sie die Abfrage 1 in sinnvolle Zeitabschnitte ein.
SELECT Kunde.Nr, Kunde.Nachname, sum(Buch.Preis*Auftragspos.Menge) as Umsatz, count(distinct Auftrag.Nr), Auftrag.Datum
FROM Kunde, Buch, Auftragspos, Auftrag WHERE Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr= Auftragspos.Auftragsnummer and Auftragspos.Buchnummer =Buch.Nr and Auftrag.Datum <= "2007-12-31" and Auftrag.Datum >= "2006-01-01"
group by Kunde.Nr
order by Auftrag.Datum
Also irgendwas stimmt da leider nicht ...
Tja hat ja immerhin einen ganzen Tag gedauert ... aber es gibt leider keine Aufträge zw. 2007 - 2003
SELECT Kunde.Nr, Kunde.Nachname, sum(Buch.Preis*Auftragspos.Menge) as Umsatz, count(distinct Auftrag.Nr), Auftrag.Datum
FROM Kunde, Buch, Auftragspos, Auftrag WHERE Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr= Auftragspos.Auftragsnummer and Auftragspos.Buchnummer =Buch.Nr and Auftrag.Datum <= "2002-12-31" and Auftrag.Datum >= "2000-01-01"
group by Kunde.Nr
order by Kunde.Nr
Ergänzen Sie die zeitlich abgegrenzten Auswertungen um einen weiteren Filter, der sich an der durchschnittlichen Anzahl der Aufträge orientiert.
Dokumentieren Sie alle, für die Lösung der Aufgabe durchgeführten Abfragen in Ihrem Weblog und beschreiben Sie den Zweck jeder durchgeführten Abfrage.
SELECT Kunde.Nr, Kunde.Nachname, sum(Buch.Preis*Auftragspos.Menge) as Umsatz, count(distinct Auftrag.Nr), Auftrag.Datum FROM Kunde, Buch, Auftragspos, Auftrag WHERE Kunde.Nr=Auftrag.Kundennummer and Auftrag.Nr= Auftragspos.Auftragsnummer and Auftragspos.Buchnummer =Buch.Nr and Auftrag.Datum <= "2002-12-31" and Auftrag.Datum >= "2000-01-01" and Kunde.Nr = 2 group by Kunde.Nr order by Kunde.Nr
Und diese Abfrage war jetzt speziell auf Kunde Nr 2 gerichtet ...
... link
(1 comment)
... comment
Übung
Daniel.HELLEIS.Uni-Linz, 13:59h
So weitergehts mit SQL
Möchte alle Kunden mit der Anzahl aller jeweiligen Aufträge und die gesamte Summe der Aufträge wissen!
Mein Lösungsvorschlag wäre:
select Kunde.Nachname, Kunde.Vorname, Kunde.Nr as Kundennummer, count(Auftrag.Nr) as "Anzahl der Aufträge", Sum(Buch.Preis*Auftragspos.Menge) as Umsatz
from Kunde, Auftrag, Buch, Auftragspos
where Kunde.Nr = Auftrag.Kundennummer and Auftrag.Nr = Auftragspos.Auftragsnummer and Auftragspos.Buchnummer = Buch.Nr
group by Kunde.Nachname
Vielleicht kann mir ja wer erklären wie das nochmals mit den group by, having und order by geht ...
also order by is ja so etwa wie der distinctiv Befehl oder?
Vielen Dank
... link
(0 comments)
... comment
2 Hausübung (Ferien) ... haben Studenten Ferien?
Daniel.HELLEIS.Uni-Linz, 22:25h
Zeigen Sie Ihre SQL-Kenntnisse.
Führen Sie auf SQL.IDV.EDU mindestens 5 Abfragen mittels SQL, mit steigendem Schwierigkeitsgrad durch. Beschreiben Sie das Ziel der jeweiligen Abfrage und dokumentieren Sie die Beschreibung und die entsprechende SQL-Anweisung in Ihrem Weblog.
Deadline: 1. April
Also für meinen Teil, glaub ich ja dass mich die ! SQL DATENBANK ! schon verfolgen ...
SQL bedeutet soviel wie strukturierte Abfragesprache.
Select leitet hierbei die Anweisung ein, from sagt in welcher Tabelle der Datenbank die Select Anweisung angewendet werden soll und mit der letzten Anweisung where, wird eine zusätzliche Bedingung eingebaut, die nur bestimmte Datensätze einer Tabelle selektiert!
Für mich ist es immer einfacher sich bei den Abfragen zu steigern. Deshalb beginne ich mit einfachen Select Abfragen!
Der Befehl:
Select Ort from PLZ
wirft alle Orte in der Datenbank aus, aber nicht geordnet und ohne Einschränkung.
Select distinct Ort from PLZ wirft alle Orte nur einmal aus.
Select distinct Ort from PLZ order by Ort ASC
wirft alle Orte beginnend mit A - Z aus.
Select distinct Ort from PLZ order by Ort Desc
wirft hingegen alle Orte, beginnend von Z - A aus.
Verschiedene Auswahlverfahren können mit Hilfe von Boolschen Operatoren (and, or, not) vereinfacht werden.
Etwas kniffliger wird das Ganze, wenn man eine Abfrage aus zwei verschiedenen Tabellen zu einem Datensatz kombinieren will.
Select Kunde.Vorname, Kunde.Nachname, Kunde.Plz, PLZ.Ort from Kunde, PLZ where (Kunde.Plz=PLZ.Plz)
Verbinde sozusagen 2 Tabellen miteinander. Tabelle PLZ und Kunde ... aber warum ... weil ich auch den dazupassenden Ort haben will!
Zum Abschluss gibts ja dann auch noch Gruppenfunktionen:
Count - Sum - AVG - Max - Min
Select count(*) from Buch wirft die Anzahl der Bücher aus.
Select Autor, max(Preis) from Buch group by Autor ASCwirft das teuerste Buch jedes Autors von A - Z aus.
Freue mich schon über eure comments ;)
... link
(0 comments)
... comment
IV II SS 2008 Mittendorfer
Daniel.HELLEIS.Uni-Linz, 20:35h
Bin ja schon gespannt, was mich in IV II so alles erwarten wird!
LVA-Nummer: 248805 (2008S)
LVA-Leiter: Herr Johann Mittendorfer!
Unterstützt wird er durch seine rechte Hand, unserem Tutor Herrn Patrick Führer! Skype Benutzername: mywaypatrick
Tutoriumstermine sind: Dienstags
Gruppe 1: 8:30 bis 10:00 Uhr
Gruppe 2: 10:15 bis 11:45 Uhr
Gruppe 3: 12:00 bis 13:30 Uhr
Wichtige Seiten
! HTML leicht gemacht !
... link
(0 comments)
... comment
|
Online for 6105 days
Last update: 2008.11.05, 22:05
You're not logged in ... login
November 2024 |
Mo |
Di |
Mi |
Do |
Fr |
Sa |
So |
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
|
Zwei Sonderaufgaben für...
Reorganisieren Sie Ihren Lernblog, er ist in der...
by Hans.Mittendorfer.Uni-Linz (2008.11.05, 22:05)
Tutorium part II
Select Verlag, count(*) As Buchanzahl from Buch Group...
by Daniel.HELLEIS.Uni-Linz (2008.04.15, 09:43)
hi
arbeite mit dem Befehl...
hi
arbeite mit dem Befehl "between", dann tust du...
by patrick.fuehrer.Uni-Linz (2008.04.13, 11:02)
hi
sehe ich das so richtig:
Einkauf...
hi
sehe ich das so richtig:
Einkauf sind die Werte,...
by patrick.fuehrer.Uni-Linz (2008.04.10, 08:25)
Hilfe!
hilfe excel vs. sql ( sql, 46 KB)
kann mir da vielleicht...
by Daniel.HELLEIS.Uni-Linz (2008.04.09, 15:19)
|