Die Olympia-Datenbank: Anfragen (Teil 3)
Lösen Sie die folgende Aufgabe mit PostgreSQL.
Für spezielle Syntaxfragen steht Ihnen die offizielle Online-Dokumentation von PostgreSQL zur Verfügung.
Die Datentypen werden in Kapitel 8 des PostgreSQL-Manuals beschrieben. Die Datumstypen DATE
und TIMESTAMP
finden Sie im PostgreSQL-Manual in den Abschnitten Date/Time Types und Date/Time Functions and Operators.
Das Datenmodell
Gegeben sei wieder folgende Datenbank zur Speicherung von olympischen Wettbewerben:

Datenbankschema
sportler: id, name, vorname*, geburtstag, land, geschlecht {PK: id} {UNIQUE: name, vorname*, geburtstag, land, geschlecht} {geschlecht IN ('w', 'm')} wettkampf: id, sportart, wettkampfart, geschlecht, sportstaette, beginn* {PK: id} {UNIQUE: sportart, wettkampfart, geschlecht} {geschlecht IN ('w', 'm', 'x')} teilnahme: s_id, w_id, platz*, doping*, disqualifiziert {PK: s_id, w_id} {FK: s_id -> sportler: id} {FK: w_id -> wettkampf: id} {platz > 0} {NOT(doping IS TRUE AND disqualifiziert IS FALSE)} {NOT(disqualifiziert IS TRUE AND platz IS NOT NULL)}
Aufgabe
Lösen Sie die Aufgaben, die Sie in der Datei olympia_aufgabe_3.sql
vorfinden. Kopieren Sie diese Datei auf Ihren Rechner und tragen Sie Ihre Lösungen in diese Datei ein.
Achten Sie bitte darauf, dass Ihre SQL-Anfragen für jeden gültigen Datenbestand genau die gewünschten Informationen als Ergebnis ausgeben, nicht mehr und nicht weniger.
Hausaufgabe
Lösen Sie die Aufgaben a, f und g ein zweites Mal, aber auf eine andere Art und Weise als beim ersten Mal. Das heißt, verwenden Sie zur Lösung der Probleme jeweils mindestens einen SQL-Operator, den Sie in der ersten Lösung nicht verwendet haben. (Es reicht nicht aus, aus einem Left-Join einen Right-Join zu machen o. Ä. Die Lösungen sollen sich von der Idee her unterscheiden.)