Aufgabe 1: Fensteranfragen (1 P.)

Werbung
Datenbanksysteme WS 2015/16
Prof. Dr.-Ing. Sebastian Michel
MSc. Manuel Hoffmann
TU Kaiserslautern, FB Informatik – Lehrgebiet Informationssysteme
Übungsblatt 9: Ausgabe 05.01.2016, Präsentation 12.01.2016
http://dbis.informatik.uni-kl.de
Aufgabe 1: Fensteranfragen
(1 P.)
Beantworten Sie unten stehende Anfragen mit SQL auf der folgenden Tabelle land 1 :
CREATE TABLE land (
lnr VARCHAR (4) PRIMARY KEY ,
name VARCHAR (50) ,
einwohner DECIMAL (20 ,2) , -- in Millionen
flaeche INT ,
hauptstadt VARCHAR (30) ,
kontinent VARCHAR (15) ) ;
1. Geben Sie die Namen aller Länder zusammen mit deren Einwohnerzahlen aus.
2. Geben Sie die Namen aller Kontinente zusammen mit deren Gesamt-Einwohnerzahlen aus.
3. Geben Sie die Namen aller Länder zusammen mit deren Einwohnerzahlen aus sowie dem Namen
des Kontinents, in dem das Land liegt, und wie viele Einwohner insgesamt in diesem Kontinent
liegen.
4. Geben Sie die Namen aller Länder zusammen mit deren Einwohnerzahl aus sowie dem Namen
des Kontinents, in dem das Land liegt, und den weltweiten Rang gemessen an der Einwohnerzahl.
Sortieren Sie die Ausgabe nach dem Rang, sodass z.B. China mit Rang 1 ganz oben steht, weil es
das Land mit weltweit den meisten Einwohnern ist.
5. Wie bei der vorherigen Aufgabe, bloß dass der Rang innerhalb des Kontinents angegeben wird. Nun
stehen also Australien, Brasilien, Deutschland, die vereinigten Staaten, China und Nigeria jeweils
mit Rang 1 ganz oben, weil sie die einwohnerstärksten Länder in ihrem Kontinent sind.
6. Was bedeuten die Werte in der vierten Spalte der folgenden Fensteranfrage?
SELECT name , einwohner , flaeche ,
SUM ( flaeche ) OVER ( ORDER BY einwohner )
FROM land ORDER BY einwohner
1 Auf
der Vorlesungswebseite finden Sie das Tabellenschema samt Beispieldaten zum Download.
1
Datenbanksysteme WS 2015/16
Prof. Dr.-Ing. Sebastian Michel
MSc. Manuel Hoffmann
TU Kaiserslautern, FB Informatik – Lehrgebiet Informationssysteme
Übungsblatt 9: Ausgabe 05.01.2016, Präsentation 12.01.2016
http://dbis.informatik.uni-kl.de
Aufgabe 2: Implementierung von Fensteranfragen
(1 P.)
(a) Geben Sie für die folgende Anfrage über die Relation t(a, b, c) ein äquivalentes SQL-Statement
ohne Fensterfunktionen an:
SELECT a , b ,
AVG ( c ) OVER ( PARTITION BY a ORDER BY b ASC )
FROM t ORDER BY a ;
(b) Beschreiben Sie algorithmisch, wie die folgende Anfrage vom Datenbanksystem direkt ausgewertet
werden kann, d.h., ohne die Anfrage zuvor in eine äquivalente Form zu transformieren:
SELECT a ,
AVG ( c ) OVER ( ORDER BY a ASC
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW )
FROM t ;
Aufgabe 3: Rekursion mit SQL
(1 P.)
Beantworten Sie unten stehende Anfrage mit einer rekursiven SQL-Anfrage auf der folgenden Tabelle
fernbus 1 :
CREATE TABLE fernbus (
busnr INT PRIMARY KEY ,
von VARCHAR (31) ,
nach VARCHAR (31) ,
dauer INT ,
-- in Minuten
preis INT ) ;
-- in Euro
Was ist der günstigste Weg, mit Fernbussen von Kaiserslautern nach Hamburg zu kommen? Die Fahrt
soll insgesamt nicht länger als 1200 Minuten (20h) dauern. Wie oft und wo muss umgestiegen werden?
2
Herunterladen