Posted By

donfips on 12/07/10


Tagged


Versions (?)

UE8


 / Published in: SQL
 

  1. /* Uebungsblatt 8 - Datenbanksysteme */
  2.  
  3. /* Aufgabe 1
  4. Formulieren Sie die folgenden Anfragen in SQL. Verwenden Sie keine Aggregation */
  5.  
  6. /* Von welchen Dozenten ist die Zimmernummer nicht bekannt? */
  7. SELECT * FROM dozent WHERE zimmernummer IS NULL;
  8.  
  9. /* In welchen Zimmern sitzen die Dozenten aus dem Fachbereich E-Technik? */
  10. SELECT DISTINCT zimmernummer FROM dozent WHERE fachbereich='E-Technik' AND zimmernummer IS NOT NULL;
  11.  
  12. /* Welche Veranstaltungen sind im dritten bis funften Semester? */
  13. SELECT titel FROM veranstaltung WHERE semester BETWEEN 3 AND 5;
  14.  
  15. /* Gehen Sie davon aus, dass alle Dozenten eines Fachbereichs alle
  16. Veranstaltungen halten können, die andere Dozenten desselben Fachbereichs
  17. schon gehalten haben. Was sind alle Möglichkeiten (Dozentenname,
  18. Veranstaltungsname, Fachbereich) eines Veranstaltungsplan? */
  19. SELECT titel, name, fachbereich FROM veranstaltung V, dozent D WHERE V.dozent IN (SELECT DFB.kuerzel FROM dozent DFB WHERE DFB.fachbereich=D.fachbereich);
  20.  
  21. /* Wer hält die Veranstaltung mit der größten Veranstaltungsnummer? */
  22. SELECT D.name FROM dozent D, veranstaltung V WHERE V.dozent=D.kuerzel AND V.nummer >= ALL(SELECT DISTINCT nummer FROM veranstaltung);
  23.  
  24. /* Wer sitzt im Zimmer mit der größten Zimmernummer? */
  25. SELECT zimmernummer, name FROM dozent WHERE zimmernummer >= ALL(SELECT zimmernummer FROM dozent WHERE NOT zimmernummer IS NULL);
  26.  
  27. /* Was sind die Vornamen von Dozenten, die Veranstaltungen halten, die sich in der
  28. Veranstaltungsnummer nur um 1 voneinander unterscheiden? */
  29. SELECT D.vorname FROM dozent D, veranstaltung V WHERE V.dozent=D.kuerzel AND V.nummer = ANY(SELECT VV.nummer+1 FROM veranstaltung VV WHERE VV.dozent=D.kuerzel);
  30.  
  31. /* ODER */
  32. SELECT D.vorname FROM dozent D, veranstaltung V, veranstaltung VV WHERE V.dozent=D.kuerzel AND VV.dozent=D.kuerzel AND VV.nummer - V.nummer = 1;
  33.  
  34. /* Aufgabe 2
  35. Erstellen Sie eine Liste aller Veranstaltungen mit Titel und Namen der Dozenten, die diese
  36. Veranstaltungen halten. Falls ein Dozent keine Veranstaltung hält soll er trotzdem in der
  37. Liste auftauchen. Welche Dozenten halten keine Veranstaltung? */
  38. SELECT V.titel, D.name FROM dozent D LEFT OUTER JOIN veranstaltung V ON (V.dozent=D.kuerzel);
  39. SELECT V.titel, D.name FROM dozent D LEFT OUTER JOIN veranstaltung V ON (V.dozent=D.kuerzel) WHERE V.titel IS NULL;
  40.  
  41. /* Aufgabe 3
  42. Formulieren Sie die folgenden Anfragen in SQL. Nutzen Sie Aggregation. */
  43.  
  44. /* Wie viele Veranstaltungen gibt es? */
  45. SELECT count(nummer) FROM veranstaltung;
  46.  
  47. /* Wieviele Veranstaltungen gibt es für das 1. Semester? */
  48. SELECT count(nummer) FROM veranstaltung WHERE semester=1;
  49.  
  50. /* Wieviele Dozenten haben ein G am Anfang des Namens? */
  51. SELECT count(name) FROM dozent WHERE name LIKE 'G%';
  52.  
  53. /* Wie viele Veranstaltungen werden von jedem Dozenten gehalten? */
  54. SELECT D.name, count(*) AS anzahl FROM veranstaltung V, dozent D ON (V.dozent=D.kuerzel) GROUP BY D.name;
  55.  
  56. /* Sortieren Sie die letzte Anfrage absteigend. */
  57. SELECT D.name, count(*) AS anzahl FROM veranstaltung V, dozent D ON (V.dozent=D.kuerzel) GROUP BY D.name ORDER BY anzahl DESC;
  58.  
  59. /* Wer sitzt im Zimmer mit der größten Zimmernummer? */
  60. SELECT name FROM dozent WHERE zimmernummer=(SELECT max(zimmernummer) FROM dozent);
  61.  
  62. /* Wie viele Dozenten halten Veranstaltungen, deren Nummer kleiner ist als der
  63. Mittelwert der Nummern aller Veranstaltungen? */
  64. SELECT count(DISTINCT dozent) FROM veranstaltung V WHERE V.nummer > (SELECT avg(nummer) FROM veranstaltung);

Report this snippet  

You need to login to post a comment.