Wie wars?

ice-breaker
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 216
Registriert: 14. Okt 2008 17:56

Wie wars?

Beitrag von ice-breaker »

Und was ist eure Meinung zu der Klausur?
Ich denke mal es war durchaus machbar und der zeitliche Rahmen vollkommen ok, ich war nach der Hälfte der Zeit einmal durch und konnte somit nochmal viel Zeit in die schweren Aufgaben investieren. Bis auf den SQL-Query in 3c war es ja alles in Ordnung, wer hat ihn denn hinbekommen?

Nach 20min hatte ich endlich die Lösung gefunden (aufgestücktelt zur Lesbarkeit in 3 Teile):
SELECT Vorname, Nachname. Gehalt
FROM Dozent
WHERE Gehalt IN(max10Gehälter)
max10Gehälter:
SELECT d1.Gehalt
FROM distinctGehalt AS d1 (Gehalt), distinctGehalt AS d2 (Gehalt)
WHERE d1.Gehalt <= d2.Gehalt
GROUP BY d1.Gehalt
HAVING COUNT(*) <= 10
distinctGehalt:
SELECT DISTINCT Gehalt FROM Dozent
Hat jemand eine simplere Möglichkeit gefunden? Mir ist beim besten Willen keine eingefallen. Meiner Meinung nach sollte man diese Aufgabe aber aus der Wertung rausnehmen, denn ich vermute mal die wurde wirklich nur von den wenigsten gelöst oder?

Mirlix_
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 188
Registriert: 3. Mär 2006 14:57

Re: Wie wars?

Beitrag von Mirlix_ »

Ich fand die Klausur auch sehr angemessen und wer alle Übungen und Tutorien gemacht hat, sollte keine Probleme haben die Klausur bestanden zu haben. Manche Aufgaben waren relativ schwer und da werde ich auch einige Fehler haben, was ich aber nicht so schlimm finde, solang man mit dem "normalen" Vorlesungswissen ohne Probleme bestehen kann hab ich nichts gegen ein oder zwei schwerer Aufgabe.

Insgesamt eine sehr nette und gut gestalte Klausur imho.
"If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with." Edsger W. Dijkstra

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Wie wars?

Beitrag von robert.n »

Meine Lösung von Aufgabe 3c:

Code: Alles auswählen

SELECT Vorname, Nachname, Gehalt FROM
    (SELECT D1.Personalnr, D1.Vorname, D1.Nachname, D1.Gehalt
         FROM Dozent D1 JOIN Dozent D2
         WHERE D1.Gehalt <= D2.Gehalt
         ORDER BY D1.Gehalt DESC
         GROUP BY D1.ID
         HAVING COUNT(*) <= 11)
     ORDER BY Gehalt DESC
Ich glaube das war so meine Lösung... das letzte ORDER BY Gehalt DESC ist eigentlich nicht mehr nötig, denke ich... aber schaden kann es auch nicht, dachte ich mir.

Die äußere Query wird letztlich nur noch gebraucht, weil man ja sonst nicht nach D1.ID groupen könnte.

Ob das JOIN in der Form möglich ist, weiß ich nicht. Ich glaube man hätte auch einfach SELECT ... FROM Dozent D1, Dozent D2 schreiben können.
Das Prinzip sollte doch so aber richtig sein (?).

EDIT:
Meinung zur Klausur: Seeeeeeeehr viel Zeit. Schade, dass weder RA, RTK noch RWK drankamen.
=> Top.
Zuletzt geändert von robert.n am 13. Sep 2010 15:39, insgesamt 1-mal geändert.

b00m3r
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 10. Okt 2005 11:02

Re: Wie wars?

Beitrag von b00m3r »

Hab das so gemacht, wie wir das in den Probeklausuren gemacht haben.

Hab die Top 10 Gehälter der Profs mittels

Select Vorname, Nachname, Gehalt
From Dozent D
Where Personalnummer =
Select temp.id From(
SELECT D1.Personalnummer As ID, count(D1.Gehalt)
FROM Dozent D1, Dozent D2
WHERE D1.Gehalt <= D2.Gehalt
ORDER BY D1.Gehalt DESC
GROUP BY D1.ID
HAVING COUNT(*) <= 10)temp)

Also erst die IDS und dann im letzten Schritt den Namen und das Gehalt drangesetzt

henß
Mausschubser
Mausschubser
Beiträge: 45
Registriert: 18. Nov 2009 14:50

Re: Wie wars?

Beitrag von henß »

Code: Alles auswählen

SELECT Vorname, Nachname, Gehalt FROM Dozent d WHERE (SELECT COUNT(*) FROM Dozent WHERE Gehalt > d.Gehalt) < 10 ORDER BY Gehalt DESC
Kurz aber schmerzlos :)

Wenn auch mehr als 10 Tupel ausgegeben werden, wenn mehrere das "10. Gehalt" beziehen, dafür hat man
dann aber auch eine korrekte Liste und nichts mehr oder weniger auf Basis des Zufalls Abgeschnittenes.

Antworten

Zurück zu „Archiv“