3. Praktikum - Fachbereich Informatik

Hochschule Darmstadt
Fachbereich Informatik
Data Warehouse SS 2015
Praktikumsversuch 3
Prof. Dr. S. Karczewski
Dipl. Inf. Dipl. Math. Y. Orkunoglu
Datum: 21.05.2015
Aufgabenstellung
1. Kurzbeschreibung
Dieses Praktikum besteht aus 2 Teilen:
I.
Vier Tabellen werden angelegt. Die Tabellen werden mit Daten gefüllt. Die Daten werden
bereitgestellt.
II.
Die Daten werden mit SQL-Befehlen abgefragt, wobei die OLAP Funktionen von SQL
geübt werden.
Zum Einsatz kommt hierbei das Werkzeug:
SQL Developer (Oracle-Client)
2. Lernziele
Die Studierenden sollen in die Lage versetzt werden:
Daten aus DB-Tabelllen abzufragen (Mit SQL-Befehle)
OLAP-Funktionen





GROUP BY ROLLUP;
GROUP BY CUBE;
GROUPING SETS (..)
OVER (..)
OVER (PARTITION BY …)
3. Voraussetzung
Es wäre sehr angebracht, wenn Sie sich mit den folgenden OLAP-Befehlen unter
SQL auseinandersetzen würden.




GROUPING SETS (..)
OVER (..) OVER (PARTITION BY …)
RANK ()
PRECEDING (), FOLLOWINGS ()
4. Abnahme
Die Abnahme findet am Ende der Praktikumssitzung statt.
1
SQL Developer starten
Starten Sie die Software SQL DEVELOPER aus dem Verzeichnis:
C:\SQLDEVELOPER 4.0.3\ C:\SQLDEVELOPER.exe
TEIL I
Tabellen anlegen
Die Tabellen sollen angelegt werden. Die Skript-Datei (TabellenAnlegen.sql) ist
auszuführen.
(Sie befindet sich auf der Homepage von Herrn Y. Orkunoglu)
Tabellen mit Daten füllen
Die Daten in der Datei insertdaten.sql müssen in die erstellten Tabellen geladen
werden.
(Sie befindet sich auf der Homepage von Herrn Y. Orkunoglu)
TEIL II
A. Der group by cube Operator
Auch der cube Operator ist eine Kurzform für Anfragemuster zur Berechnung von Teil und
Gesamtsummen. Allerdings verhält er sich anders als der rollup Operator. Führen Sie
folgendes SQL-Statement aus:
SELECT Produktreihe, Absatzgebiet, sum(Umsatz)
FROM Produkt P, Vertrieb V, Umsatz U
WHERE P.Produktnummer = U.Produktnummer
AND V.NR_Vertriebsbeauftragten = U.NR_Vertriebsbeauftragten
GROUP BY CUBE (Produktreihe, Absatzgebiet)
ORDER BY Produktreihe, Absatzgebiet;
Die Ausgaberelation sollte wie folgt aussehen:
PRODUKTREIHE
Accessoires
Accessoires
Accessoires
Accessoires
Bergsteigerausrüstung
Bergsteigerausrüstung
Bergsteigerausrüstung
Campingausrüstung
Campingausrüstung
Campingausrüstung
(null)
(null)
(null)
(null)
ABSATZGEBIET
Asiatisch-pazifischer Raum
Mitteleuropa
Nord-/Lateinamerika
(null)
Mitteleuropa
Nord-/Lateinamerika
(null)
Mitteleuropa
Nord-/Lateinamerika
(null)
Asiatisch-pazifischer Raum
Mitteleuropa
Nord-/Lateinamerika
(null)
SUM(UMSATZ)
124
522
544
1190
409
665
1074
1222
3433
4655
124
2153
4642
6919
Im obenstehde SQL-Code erstetzen CUBE mit ROLLUP. Dann vergleichen Sie die Ergebnisse.
Worin liegt mit Ihren eigenen Worten der Unterschied zwischen dem rollup und dem cube
Operator?
2
B. Vom Ergebnis zu SQL-Abfrage
Folgende Aufgaben sind mit Hilfe von
group by rollup, grouping sets, group by cube
zu lösen. Versuchen Sie dabei auch, Varianten auszuprobieren.
Gegeben seien die folgenden Ausgaben. Formulieren Sie den passenden
SQL-Befehl zu 1. und 2.
1.
JAHR
1999
1999
1999
1999
1999
1999
1999
1999
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
-
PRODUKTREIHE
ANBIETERLAND
Accessoires
Accessoires
Accessoires
Accessoires
Campingausrustung
Campingausrustung
Campingausrustung
Accessoires
Accessoires
Accessoires
Accessoires
Bergsteigerausrustung
Bergsteigerausrustung
Bergsteigerausrustung
Campingausrustung
Campingausrustung
Campingausrustung
-
China
Deutschland
USA
Deutschland
USA
China
Deutschland
USA
Deutschland
USA
Deutschland
USA
-
2.
3
UMSATZ
36
160
184
380
261
1388
1649
2029
47
210
184
441
272
380
652
416
1291
1707
2800
4829
JAHR
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
2000
-
PRODUKTREIHE
ANBIETERLAND
Accessoires
Accessoires
Accessoires
Accessoires
Campingausrustung
Campingausrustung
Campingausrustung
Accessoires
Accessoires
Accessoires
Accessoires
Bergsteigerausrustung
Bergsteigerausrustung
Bergsteigerausrustung
Campingausrustung
Campingausrustung
Campingausrustung
Accessoires
Accessoires
Accessoires
Accessoires
Bergsteigerausrustung
Bergsteigerausrustung
Bergsteigerausrustung
Campingausrustung
Campingausrustung
Campingausrustung
-
China
Deutschland
USA
Deutschland
USA
China
Deutschland
USA
China
Deutschland
USA
Deutschland
USA
Deutschland
USA
China
Deutschland
USA
China
Deutschland
USA
Deutschland
USA
Deutschland
USA
China
Deutschland
USA
-
UMSATZ
36
160
184
380
261
1388
1649
36
421
1572
2029
47
210
184
441
272
380
652
416
1291
1707
47
898
1855
2800
83
370
368
821
272
380
652
677
2679
3356
83
1319
3427
4829
3. Erläutern Sie anhand der Ergebnisse von 1. und 2., was inhaltlich ausgegeben
wird.
C. SQL-Abfragen
1. Lassen Sie das Jahr, Jahresumsätze anzeigen (gruppiert nach Jahr)
2. Lassen Sie das Jahr, Monat, Monatsumsätze anzeigen
3. Wie letzte Aufgabe (C.2), aber der Gesamtumsatz pro Jahr soll am Ende des
letzten Monat de Jahres gezeigt wird.
4
D- OVER () und OVER (Partition by …) Befehle anwenden
Führen Sie die untenstehenden Sql-Befehle aus:
1-)
Select produktnummer, bestelldatum, sum(umsatz) as Summe_am_Bestelldatum
from umsatz
where produktnummer=12
group by (produktnummer, bestelldatum)
order by produktnummer, bestelldatum DESC;
2-)
Select produktnummer,
bestelldatum,
sum(umsatz) as Summe_am_Bestelldatum,
??? als 4.Spalte soll “Produktsumme“ angezeigt werden (mit Hilfe von
OVER(PARTITION BY…)
from umsatz
where produktnummer=12
group by (produktnummer, bestelldatum)
order by produktnummer, bestelldatum DESC;
Versuchen Sie es, nachzuvollziehen, was der Befehl ODER (PARTITION BY ) macht.
3-) Lassen Sie Jahr, Monat, Umsatz des Monats und Gesamtumsatz (für alle Jahren) anzeigen.
4-) Lassen Sie Jahr, Monat, Umsatz des Monats und Gesamtumsatz (für jeweiligeJahre) anzeigen
5-) Lassen Sie Jahr, Jahresumsatz, Gesamtumsatz (gruppiert nach Jahre) anzeigen
E- Sequenzbasierte Operationen
Sie können hierzu in der Vorlesung bzw.im Praktikum vorgestellten
Operationenverwenden: OVER(), RANK(), PRECEDING(), FOLLOWING().
Beispiel:
SELECT name_vertriebsbeauftragten, sum(UMSATZ) as Umsatz_Vertriebsbeauftragten
FROM VERTRIEB V,umsatz U
WHERE V.NR_VERTRIEBSBEAUFTRAGTEN=U.NR_VERTRIEBSBEAUFTRAGTEN
GROUP BY name_vertriebsbeauftragten
order by sum(UMSATZ) desc;
HINWEIS: Sie müssen Ihre Ergebnisse mit den Ergebnissen von Orkunoglu vergleichen
1. Sie ermitteln dasselbe Ergebnis (siehe Beispiel), indem Sie den Befehl OVER (
Partition by ---) verwenden.
2. Ermitteln Sie, mit welchem Produkttyp die höchsten Umsätze erzielt wurden.
3. Ermitteln Sie, welches Land die höchsten Umsätze erzielt.
4. Ermitteln Sie, welche Produkte in USA und in Los Angeles vertrieben wurden.
5. Ermitteln Sie die Anteile der Umsätze am Gesamtumsatz je Produktreihe (!).
6. Ermitteln Sie die Anteile der Umsätze am Gesamtumsatz je Monat im Jahr 1999 und
2000.
5
7. Geben Sie die kumulierten Umsätze im Jahr 2000 sortiert nach Monat aus, wobei je
Produktreihe kumuliert werden soll.
8. Ranken Sie die Umsätze (je Produktreihe) nach Umsatz und Monat.
9. Ermitteln Sie die 5 stärksten Umsatzmonate.
10. Lassen Sie die Jahresumsätze und und die Summe von 3 Jahren (vor-und nach )
(Rows Between 1 Preceding And 1 Following)
6