Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Aufgabe 1
- a, Bestimmen Sie f¨ur jede Vorlesung (Anzuzeigen: Nummer und Titel ) die Durchschnittsnote (gerundet
- auf drei Stellen) ¨uber alle in dem Fach stattgefundenen Pr¨ufungen.
- select V.vorlNr, V.titel, ROUND(avg(note),3) from Vorlesungen V, Pruefungen P
- Where V.vorlNr = P.vorlNr
- Group by V.vorlNr
- b, Bestimmen Sie Personalnummer und Namen eines jeden Professors, zusammen mit der Anzahl der unterschiedlichen
- Vorlesungen, die er h¨alt. Professoren ohne Vorlesung sollen mit einer Vorlesungsanzahl
- von 0 angegeben werden.
- Sortieren Sie das Ergebnis absteigend nach der Anzahl der Vorlesungen.
- select persNr, name, count(distinct V.vorlNr) as AnzahlVorlesungen from Professoren P left outer join Vorlesungen V on P.persNr = V.gelesenVon
- Group by persNr
- order by AnzahlVorlesungen desc
- c, Bestimmen Sie f¨ur jeden Studenten (Anzuzeigen: Matrikelnummer und Name), wieviele andere Studenten
- aus einem h¨oheren Semester dieser kennt (d.h. beide besuchen mindestens eine Vorlesung gemeinsam).
- Zeigen Sie nur Studenten an die mehr als zwei andere Studenten aus einem h¨oheren Semester
- kennen.
- select S1.name, count(S1.name) from (Studenten S1 join hoeren H1 on S1.matrNr = H1.matrNr) join (Studenten S2 join hoeren H2 on S2.matrNr = H2.matrNr)
- where S1.name < S2.name and S1.semester < S2.semester and H1.vorlNr = H2.vorlNr
- Group by S1.name
- having count(S1.name)>2
- d, Bestimmen Sie die Professoren (Anzuzeigen: Personalnummer und Name), f¨ur die mindestens zwei Studenten
- mindestens drei Vorlesungen des jeweiligen Professors h¨oren.
- Tipp: Erstellen Sie passende Views, um die Anfrage ¨ubersichtlicher zu gestalten. Benutzen Sie hierzu die
- Syntax aus der Vorlesung!
- (bewerten)
- select persNr, name from Professoren P
- join Vorlesungen V on P.persNr = V.gelesenVon
- join hoeren H on V.vorlNr = H.vorlNr
- Group by persNr
- having count(distinct H.matrNr)>2 and count(distinct V.vorlNr)>3
- (Nicht bewerten)
- Oder Übersichtlicher mit Views:
- War der Tipp der bei der Aufgabe stand so gemeint?
- create view ProfessorenMitVorlesung as
- select persNr, name, V.vorlNr from Professoren P
- join Vorlesungen V on P.persNr = V.gelesenVon
- create view ProfessorenMitVorlesungDieGehoertWerden as
- select persNr, name from ProfessorenMitVorlesung P
- join hoeren H on P.vorlNr = H.vorlNr
- Group by persNr
- having count(distinct H.matrNr)>2 and count(distinct P.vorlNr)>3
- select * from ProfessorenMitVorlesungDieGehoertWerden
- e, Bestimmen Sie f¨ur jede Vorlesung (Anzuzeigen: Nummer und Titel), welche mindestens eine andere Vorlesung
- voraussetzt, die prozentualen Anteile (gerundet auf zwei Nachkommastellen) der teilnehmenden
- Studenten pro Semester.
- Create view VorlesungMitVoraussetzung as
- select * from Vorlesungen join Voraussetzungen on vorlNr = vorlesung
- natural join hoeren
- natural join Studenten
- Create View VorlesungHoerenPerSemester as
- Select semester, vorlNr, count(matrNr) as AnzahlStudPerSem from VorlesungMitVoraussetzung
- Group by semester, vorlNr
- Create View VorlesungHoerenStudenten as
- select vorlNr, titel, count(name) as AnzahlStudInsgesamt from VorlesungMitVoraussetzung
- Group by vorlNr
- Create View Final as
- select * from VorlesungHoerenPerSemester natural join VorlesungHoerenStudenten
- select vorlNr, titel, semester, Round(((AnzahlStudPerSem/AnzahlStudInsgesamt)*100),2) as Prozent from Final
- Mit ist nicht ganz klar wie ich hier schneller/effizienter arbeiten kann. Muss ich wirklich über die zwei unterschiedlichen Views(VorlesungHoerenPerSemester und VorlesungHoerenStudenten) gehen um mein Ziel zu erreichen?
- Einmal die Anzahl der Studenten anhand der Semester und einmal die Anzahl der Studenten insgesamt in der Vorlesung.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement