Christian-Weise-Gymnasium Zittau Fachbereich Informatik M. Hans Lösungen zur SQL-Übung (Terra-Datenbank) Aufgabennummer Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 Aufgabe 6 Aufgabe 7 Aufgabe 8 Aufgabe 9 Aufgabe 10 Aufgabe 11 Lsgen_SQL_terra.rtf SQL - Quelltext Ergebnisrelation SELECT K_NAME FROM KONTINENT; 4 Zeilen SELECT I_NAME FROM INSEL WHERE INSELGRUPPE LIKE 'Phili%'; SELECT W_NAME FROM WUESTE WHERE WUESTENART = 'Sandwueste' AND FLAECHE > 25000; SELECT B_NAME FROM BERG WHERE GEBIRGE LIKE '%alpen'; SELECT F_NAME FROM FLUSS WHERE MEER IN ( 'Ostsee', 'Nordsee') AND LAENGE > 1000; SELECT ST_NAME, BREITE, LAENGE FROM STADT WHERE EINWOHNER > 1000000 AND BREITE BETWEEN -23.27 AND 23.27; SELECT DISTINCT GEBIRGE FROM BERG WHERE HOEHE > 3000 AND GEBIRGE IS NOT NULL; SELECT L_NAME, L_ID, EINWOHNER FROM LAND WHERE EINWOHNER > 45000000 ORDER BY 3 DESC; SELECT 100-(SUM(FLAECHE)/(4*3.14*6.37*6.37)*100) AS Meeresanteil_Prozent FROM KONTINENT; SELECT SUM(EINWOHNER) AS Einwohnerzahl FROM LAND WHERE L_ID IN ('D', 'CH', 'A'); SELECT INSELGRUPPE, count(I_NAME) AS Inselanzahl FROM INSEL 9 Zeilen -1- 9 Zeilen 5 Zeilen 4 Zeilen 62 Zeilen 35 Zeilen 25 Zeilen 73.5129803781 97500000.0000 42 Zeilen Christian-Weise-Gymnasium Zittau Fachbereich Informatik M. Hans GROUP BY INSELGRUPPE HAVING INSELGRUPPE IS NOT NULL; Aufgabe 12 Aufgabe 13 Aufgabe 14 Aufgabe 15 Aufgabe 16 SELECT F_NAME, count( ST_NAME) AS Staedteanzahl FROM LIEGT_AN GROUP BY F_NAME HAVING F_NAME IS NOT NULL AND count(ST_NAME) > 2 ORDER BY 2; SELECT ST_NAME FROM HAT_SITZ_IN GROUP BY ST_NAME HAVING ST_NAME IS NOT NULL AND count(ABKUERZUNG) > 1; SELECT DISTINCT G2.F_NAME FROM GEO_FLUSS AS G1 INNER JOIN GEO_FLUSS AS G2 ON G1.F_NAME = G2.F_NAME WHERE G1.L_ID = 'D' AND G2.L_ID = 'A'; SELECT I_NAME, FLAECHE FROM INSEL WHERE FLAECHE IN (SELECT max(FLAECHE) AS INSELFLAECHE FROM INSEL); SELECT DISTINCT L_NAME, HAUPTSTADT FROM LAND LEFT JOIN IST_MITGLIED_VON ON LAND.L_ID = IST_MITGLIED_VON.L_ID WHERE LAND.L_ID NOT IN (SELECT DISTINCT L_ID FROM IST_MITGLIED_VON WHERE ABKUERZUNG = 'UNO'); Teilaufgabe 1 21 Zeilen 10 Zeilen 1 Zeile 1 Zeile 30 Zeilen 53 Zeilen SELECT L_NAME, EINWOHNER, FLAECHE, UMFASST.PROZENT FROM LAND INNER JOIN UMFASST ON LAND.L_ID = UMFASST.L_ID WHERE UMFASST.K_NAME = 'Afrika'; Aufgabe 17 Teilaufgabe 2 53 Zeilen SELECT DISTINCT LAND.L_NAME, LAND.FLAECHE/(KONTINENT.FLAECHE*1000000)*100 AS Flaecheninhalt FROM LAND INNER JOIN (UMFASST INNER JOIN KONTINENT ON UMFASST.K_NAME = KONTINENT.K_NAME) ON LAND.L_ID = UMFASST.L_ID WHERE (((UMFASST.K_NAME)='Afrika') AND ((LAND.FLAECHE) IS NOT Null)); Lsgen_SQL_terra.rtf -2- Christian-Weise-Gymnasium Zittau Aufgabe 18 Aufgabe 19 Aufgabe 20 (ist leider falsch) Aufgabe 21 Aufgabe 22 Lsgen_SQL_terra.rtf Fachbereich Informatik SELECT L_NAME, UMFASST.K_NAME AS Kontinente FROM LAND INNER JOIN UMFASST ON LAND.L_ID = UMFASST.L_ID WHERE UMFASST.PROZENT < 100; SELECT DISTINCT LAND.L_NAME, GEO_EBENE.E_NAME, EBENE.HOEHE FROM (LAND INNER JOIN (EBENE INNER JOIN GEO_EBENE ON EBENE.E_NAME = GEO_EBENE.E_NAME) ON LAND.L_ID = GEO_EBENE.L_ID) INNER JOIN UMFASST ON LAND.L_ID = UMFASST.L_ID WHERE UMFASST.K_NAME='Europa' AND LAND.L_ID IN (SELECT GEO_EBENE.L_ID FROM GEO_EBENE INNER JOIN EBENE ON GEO_EBENE.E_NAME = EBENE.E_NAME WHERE EBENE.E_NAME IS NOT NULL) ORDER BY 3; SELECT land.L_NAME FROM land INNER JOIN stadt ON land.L_ID = stadt.L_ID WHERE land.L_ID In (SELECT ist_mitglied_von.l_id FROM ist_mitglied_von WHERE abkuerzung = 'EU') GROUP BY land.L_NAME, land.EINWOHNER, stadt.EINWOHNER HAVING (((Sum(stadt.einwohner))/land.einwohner)*100)>10; SELECT f1.F_NAME, f1.FLUSS, f2.MEER, f2.SEE FROM FLUSS AS f1 INNER JOIN FLUSS AS f2 ON f1.FLUSS = f2.F_NAME WHERE f2.MEER IS NOT NULL OR f2.SEE IS NOT NULL; SELECT STADT.ST_NAME, HAT_SITZ_IN.ABKUERZUNG FROM STADT INNER JOIN HAT_SITZ_IN ON STADT.ST_NAME = HAT_SITZ_IN.ST_NAME WHERE HAT_SITZ_IN.L_ID = 'USA' AND STADT.EINWOHNER > 1000000; -3- M. Hans 6 Zeilen 6 Zeilen Daenemark;-1 Grossbritannien;-1 Irland;-1 Luxemburg;-1 Oesterreich;-1 43 Zeilen 2 Zeilen