Wie war's?

Benutzeravatar
Le_Coeur
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 135
Registriert: 18. Apr 2009 12:39
Kontaktdaten:

Wie war's?

Beitrag von Le_Coeur »

Wie war die Klausur?
Ich fand die letze Aufgabe mit SQL bisschen schwer, hat jemand die gelöst?

pigbird
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 28. Apr 2008 23:34

Re: Wie war's?

Beitrag von pigbird »

ich habe folgendes gemacht, bin aber nicht 100% sicher

Code: Alles auswählen

SELECT Nachname, Vorname
FROM Dozent
WHERE ID IN (SELECT ID 
                     FROM Dozent 
                     GROUP BY ID
                     HAVING Count(Gehalt) <= 10);

Turing-Test
Mausschubser
Mausschubser
Beiträge: 91
Registriert: 17. Okt 2008 02:06

Re: Wie war's?

Beitrag von Turing-Test »

Das wird wohl nicht stimmen. Das geht ja nicht auf das Gehalt ein. Konnte auch keine Lösung dafür finden...

Edit: oh, du hast gerade editiert... sieht aber immer noch komisch aus.
File deletion is murder!

Stefan_P
Mausschubser
Mausschubser
Beiträge: 52
Registriert: 1. Okt 2007 19:04
Wohnort: Darmstadt

Re: Wie war's?

Beitrag von Stefan_P »

Ich hab es ungefähr so gelöst:

Code: Alles auswählen

SELECT D1.Nachname, D1.Vorname, D1.Gehalt
FROM Dozent D1 JOIN
  (SELECT D1.Gehalt
  FROM Dozent D1 JOIN Dozent D2
  ON D1.Gehalt <= D2.Gehalt
  GROUP BY D1.Gehalt
  HAVING Count(D2.DozentID)=10) D2
ON D1.Gehalt >= D2.Gehalt
ORDER BY Gehalt DESC;
(der Name vom DozenzID-Attribut muss nicht unbedingt stimmen...)

Benutzeravatar
^Lara^
Mausschubser
Mausschubser
Beiträge: 68
Registriert: 17. Jan 2005 12:57

Re: Wie war's?

Beitrag von ^Lara^ »

schlimmer fand ich die Synthesesaufgabe :( .... was für schlüsselkanidaten habt ihr denn da raus...

fl4$h g0rd0n
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 115
Registriert: 1. Okt 2007 22:20

Re: Wie war's?

Beitrag von fl4$h g0rd0n »

Ich fand die Klausur recht fair und von der benötigten Zeit her angemessen.

Soweit ich mich noch erinnern kann:

Für die letzte SQL Query habe ich folgendes geschrieben:

Code: Alles auswählen

SELECT Vorname, Nachname, Gehalt
FROM Dozent D1,
WHERE (SELECT count(*) FROM Dozent D2 WHERE D2.Gehalt > D1.Gehalt) <= 9;
edit: ich sehe gerade, dass ein count(distinct gehalt) wohl angebracht gewesen wäre

Wie habt ihr die zweite mit den Vor- und Nachnamen aller Studenten und Dozenten gelöst? Ich habe einen "natural full outer join" zwischen beiden Tabellen bzgl. Vor- und Nachnamen angewendet.

Bei der Synthese hatte ich als einzigen Schlüsselkandidaten abc raus. Nach dem Verfahren lag keine 3NF vor, irgendwo musste ein Attribut gestrichen werden. Es gab aber keinen Informationsverlust, weil man die ursprüngliche Relation mit einem Join hätte wiederherstellen können.
"Education is the path from cocky ignorance to miserable uncertainty" -- Mark Twain

l3on
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 9. Feb 2008 14:53

Re: Wie war's?

Beitrag von l3on »

Mein query sah genauso aus wie bei fl4$h g0rd0n. Habe aber auch kein DISTINCT reingenommen.

Evtl. habe ich die zwei auch falsch verstanden, aber ich habe nen (SELECT) UNION (SELECT) gemacht...

Benutzeravatar
Le_Coeur
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 135
Registriert: 18. Apr 2009 12:39
Kontaktdaten:

Re: Wie war's?

Beitrag von Le_Coeur »

l3on hat geschrieben:Mein query sah genauso aus wie bei fl4$h g0rd0n. Habe aber auch kein DISTINCT reingenommen.

Evtl. habe ich die zwei auch falsch verstanden, aber ich habe nen (SELECT) UNION (SELECT) gemacht...
Zweite hab ich auch durch UNION gemacht, aber UNION ALL , denn alle Studente und Professore sollen da sein, aber UNION macht immer noch DISTINCT dazu )

Benutzeravatar
crazy_wuschie
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 15. Okt 2007 18:04

Re: Wie war's?

Beitrag von crazy_wuschie »

Also ich habe die Aufgabe so verstanden:

Zeige Dozenten mit dem höchsten Gehalt an, aber nur 10 STück =)

Demnach mein Statement

Code: Alles auswählen

SELECT TOP 10 Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC
Ich weiß jetzt allerdings nicht ob das Standard Sql-Syntax ist.

Benutzeravatar
Le_Coeur
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 135
Registriert: 18. Apr 2009 12:39
Kontaktdaten:

Re: Wie war's?

Beitrag von Le_Coeur »

crazy_wuschie hat geschrieben:Also ich habe die Aufgabe so verstanden:

Zeige Dozenten mit dem höchsten Gehalt an, aber nur 10 STück =)

Demnach mein Statement

Code: Alles auswählen

SELECT TOP 10 Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC
Ich weiß jetzt allerdings nicht ob das Standard Sql-Syntax ist.
Ich denke , dass TOP kein Standart SQL ist))
Ich hab auch aehnlich geschrieben, aber mit mysql standart:
SELECT Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC LIMIT 10

quanz
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 103
Registriert: 1. Okt 2007 19:32

Re: Wie war's?

Beitrag von quanz »

Le_Coeur hat geschrieben:
crazy_wuschie hat geschrieben:Also ich habe die Aufgabe so verstanden:

Zeige Dozenten mit dem höchsten Gehalt an, aber nur 10 STück =)

Demnach mein Statement

Code: Alles auswählen

SELECT TOP 10 Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC
Ich weiß jetzt allerdings nicht ob das Standard Sql-Syntax ist.
Ich denke , dass TOP kein Standart SQL ist))
Ich hab auch aehnlich geschrieben, aber mit mysql standart:
SELECT Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC LIMIT 10
Habe es auch mit Limit gemacht. Ist aber leider falsch, da Limit von MySql definiert ist und daher nicht SQL-99 ist. Die Lösung mit TOP ist richtig.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Wie war's?

Beitrag von Osterlaus »

Le_Coeur hat geschrieben:Ich hab auch aehnlich geschrieben, aber mit mysql standart:
SELECT Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC LIMIT 10
Und genau das ist nicht SQL-konform, ja, nicht mal inhaltlich richtig. Du zeigst die zehn Manager mit den höchsten Gehältern. Gefragt war aber nach den Managern mit den zehn höchsten Gehältern, und das können unter Umständen ja mehr als zehn sein. Ich habe eine ekelhafte Verschachtelung gemacht, in etwa so:

Code: Alles auswählen

SELECT Vorname, Nachname, Gehalt FROM Dozenten WHERE Gehalt >= ( SELECT MAX(Gehalt) FROM Dozenten WHERE Gehalt < ( SELECT MAX(Gehalt) FROM Dozenten ) )
Das sollte aus meiner Sicht schon mal alle Dozenten mit den zwei höchsten Gehältern anzeigen. Auf ähnliche Weise (also mit weiteren Parts wie SELECT MAX(Gehalt) FROM Dozenten WHERE Gehalt < und der richtigen Klammerung) gehts auch mit zehnen ;)

Benutzeravatar
Le_Coeur
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 135
Registriert: 18. Apr 2009 12:39
Kontaktdaten:

Re: Wie war's?

Beitrag von Le_Coeur »

Osterlaus hat geschrieben:
Le_Coeur hat geschrieben:Ich hab auch aehnlich geschrieben, aber mit mysql standart:
SELECT Name, Vorname, Gehalt
FROM Dozenten
ORDER BY Gehalt DESC LIMIT 10
Und genau das ist nicht SQL-konform, ja, nicht mal inhaltlich richtig. Du zeigst die zehn Manager mit den höchsten Gehältern. Gefragt war aber nach den Managern mit den zehn höchsten Gehältern, und das können unter Umständen ja mehr als zehn sein. Ich habe eine ekelhafte Verschachtelung gemacht, in etwa so:

Code: Alles auswählen

SELECT Vorname, Nachname, Gehalt FROM Dozenten WHERE Gehalt >= ( SELECT MAX(Gehalt) FROM Dozenten WHERE Gehalt < ( SELECT MAX(Gehalt) FROM Dozenten ) )
Das sollte aus meiner Sicht schon mal alle Dozenten mit den zwei höchsten Gehältern anzeigen. Auf ähnliche Weise (also mit weiteren Parts wie SELECT MAX(Gehalt) FROM Dozenten WHERE Gehalt < und der richtigen Klammerung) gehts auch mit zehnen ;)
Wow, dann hab ich nicht Aufmerksam die Aufgabestellung gelesen)))

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Wie war's?

Beitrag von andre_w »

quanz hat geschrieben:Die Lösung mit TOP ist richtig.
sicher? dachte jetzt, TOP ist MSSQL-Syntax.
Habe leider nicht gewusst dass LIMIT kein SQL-Standard ist, naja wohl leider 7P weg (vllt. ein Trostpunkt? ;) )
let's be friends on twitter studivz facebook - my blog

The One and Only Markus
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 169
Registriert: 10. Nov 2005 19:28
Wohnort: Darmstadt

Re: Wie war's?

Beitrag von The One and Only Markus »

Wie auch immer die Lösung ist: ziemlich sinnfrei auf so ne Nischenfrage 7 Punkte zu geben. Da hätte man besser noch was mit Update oder so gemacht. 5 Punkte fand ich für den Fixpunkt auch zu wenig. Zwar ist's super leicht, aber hat doch viel Zeit gekostet. Vielleicht hätte man da besser ein Beispiel mit weniger Fakten genommen. Alles in Allem aber eine gute Klausur, hatte einen gewissen Anspruch war aber eigentlich alles machbar.

Antworten

Zurück zu „Archiv“