PROMPT Sommersemester 2002 PROMPT Leistungsnachweis K 849 Pruefung P2 PROMPT PROMPT Etliche der folgenden Programmzeilen sind nicht Teil PROMPT der Loesung, sondern machen die Zeilen ablauffaehig PROMPT und dienen damit lediglich der Ueberpruefung PROMPT der Korrektheit der Loesung. PROMPT PROMPT Aufgabe 1: PROMPT Anlegen der Tabellen DROP TABLE knoten; CREATE TABLE knoten (kid NUMBER, x_koor NUMBER, y_koor number); INSERT INTO knoten VALUES( 1, 11, 45); INSERT INTO knoten VALUES( 2, 26, 66); INSERT INTO knoten VALUES( 3, 24, 35); INSERT INTO knoten VALUES( 4, 146, 44); INSERT INTO knoten VALUES( 5, 67, 119); INSERT INTO knoten VALUES( 12, 46, 44); INSERT INTO knoten VALUES( 17, 67, 19); SELECT * FROM knoten; DROP TABLE segmente; CREATE TABLE segmente (sid NUMBER, von_knoten NUMBER, nach_knoten number); INSERT INTO segmente VALUES( 1, 2, 3); INSERT INTO segmente VALUES( 2, 1, 2); INSERT INTO segmente VALUES( 3, 3, 4); INSERT INTO segmente VALUES( 4, 3, 1); INSERT INTO segmente VALUES( 5, 17, 12); INSERT INTO segmente VALUES( 7, 3, 7); INSERT INTO segmente VALUES( 6, 3, 9); SELECT * FROM segmente; DROP TABLE maschen; CREATE TABLE maschen (mid NUMBER, segment NUMBER); INSERT INTO maschen VALUES( 1, 4); INSERT INTO maschen VALUES( 1, 2); INSERT INTO maschen VALUES( 1, 1); INSERT INTO maschen VALUES( 2, 3); INSERT INTO maschen VALUES( 2, 7); INSERT INTO maschen VALUES( 2, 4); INSERT INTO maschen VALUES( 17, 5); INSERT INTO maschen VALUES( 17, 6); INSERT INTO maschen VALUES( 17, 7); SELECT * FROM maschen; PROMPT Aufgabe 1 a) SELECT sid, von_knoten, nach_knoten FROM segmente WHERE (von_knoten=12 and nach_knoten=17) OR (von_knoten=17 and nach_knoten=12); PROMPT Aufgabe 1 b) SELECT mid, count(*) FROM maschen GROUP BY mid; PROMPT Aufgabe 1 c) SELECT kid FROM knoten MINUS (SELECT von_knoten FROM segmente UNION SELECT nach_knoten FROM segmente); PROMPT Aufgabe 1 d) DROP VIEW hilfe; CREATE VIEW hilfe AS (SELECT sid, von_knoten FROM segmente UNION SELECT sid, nach_knoten FROM segmente); SELECT von_knoten, count(*) FROM hilfe GROUP BY von_knoten; PROMPT Aufgabe 2 PROMPT Anlegen der Tabellen DROP TABLE werte; CREATE TABLE werte (lfd NUMBER(3), sp1 NUMBER(3), sp2 NUMBER(3)); INSERT INTO werte VALUES (1, 1, 4); INSERT INTO werte VALUES (2, 1, 3); INSERT INTO werte VALUES (3, 2, 2); INSERT INTO werte VALUES (4, 2, 1); INSERT INTO werte VALUES (5, 2, 4); INSERT INTO werte VALUES (6, 2, 3); INSERT INTO werte VALUES (7, 1, 2); INSERT INTO werte VALUES (8, 1, 1); SELECT * FROM werte; PROMPT Aufgabe 2 a) SELECT sp1, SUM(sp2), AVG(sp2) FROM werte GROUP BY sp1; PROMPT Aufgabe 2 b) SELECT * FROM werte ORDER BY sp1, sp2; SELECT lfd, sp2, sp1 FROM werte ORDER BY sp2, sp1 DESC; PROMPT Aufgabe 2 c) SELECT a.lfd, a.sp1, a.sp2, b.lfd, b.sp1, b.sp2 FROM werte a, werte b WHERE a.sp1=b.sp2; PROMPT Aufgabe 2 d) PROMPT Es ist ein Auto-Equi-Join, also ein Join einer Tabelle mit sich selbst PROMPT und einer WHERE-Bedingung mit Gleichheitszeichen. PROMPT Aufgabe 3: PROMPT Anlegen der Tabellen DROP TABLE bip2000; CREATE TABLE bip2000 (kreis_id CHAR(8), regbez_id CHAR(8), sektorI NUMBER, sektorII NUMBER, sektorIII NUMBER, sektorIV NUMBER); INSERT INTO bip2000 VALUES ('08111','081', 2240, 1279, 2347, 115); INSERT INTO bip2000 VALUES ('08145','081', 4370, 4756, 3245, 321); INSERT INTO bip2000 VALUES ('08223','082', 1390, 3375, 674, 578); INSERT INTO bip2000 VALUES ('08224','082', 298, 2286, 4437, 34); SELECT * FROM bip2000; PROMPT Aufgabe 3 a) SELECT MAX(sektorI) FROM bip2000; PROMPT Aufgabe 3 b) SELECT kreis_id, sektorI/4370*8 "Länge I", sektorII/4370*8 "Länge II", sektorIII/4370*8 "Länge III", sektorIV/4370*8 "Länge IV" FROM bip2000; PROMPT Aufgabe 3 c) DEFINE maximum="(SELECT MAX(sektorI) FROM bip2000)"; SELECT kreis_id, sektorI/&maximum*8 "Länge I", sektorII/&maximum*8 "Länge II", sektorIII/&maximum*8 "Länge III", sektorIV/&maximum*8 "Länge IV" FROM bip2000; PROMPT Aufgabe 3 d) SELECT regbez_id, SUM(sektorI) "Sektor I", SUM(sektorII) "Sektor II", SUM(sektorIII) "Sektor III", SUM(sektorIV) "Sektor IV" FROM bip2000 GROUP BY regbez_id;