Daniel`s IV II Blog @ JKU
Mittwoch, 2. April 2008
3. Hausübung
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
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


Mittwoch, 26. März 2008
2 Hausübung (Ferien) ... haben Studenten Ferien?
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 ASC

wirft das teuerste Buch jedes Autors von A - Z aus.

Freue mich schon über eure comments ;)

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


Samstag, 8. März 2008
IV II SS 2008 Mittendorfer

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
status
You're not logged in ... login
menu
... home
... topics
... galleries

... ::collabor:: home
search
 
calendar
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
 
 
 
recent updates
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)

xml version of this page

made with antville