\documentclass{bschlangaul-aufgabe}
\bLadePakete{sql,rmodell}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 4},
  Thematik = {Turmspringen},
  Referenz = 46116-2017-H.T2-TA2-A4,
  RelativerPfad = Examen/46116/2017/09/Thema-2/Teilaufgabe-2/Aufgabe-4.tex,
  ZitatSchluessel = examen:46116:2017:09,
  ZitatBeschreibung = {Thema 2 Teilaufgabe 2 Aufgabe
4},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {SQL, SQL mit Übungsdatenbank, GROUP BY},
  EinzelpruefungsNr = 46116,
  Jahr = 2017,
  Monat = 09,
  ThemaNr = 2,
  TeilaufgabeNr = 2,
  AufgabeNr = 4,
}

\noindent
Für\index{SQL}\footcite[Thema 2 Teilaufgabe 2 Aufgabe
4]{examen:46116:2017:09} die bayerische Meisterschaft im Turmspringen
ist folgendes Datenbankschema angelegt:
\footcite{db:ab:2}

\begin{liRelationenSchemaFormat}
Springer(Startnummer*, Nachname, Vorname, Geburtsdatum, Körpergröße)
Sprung(SID*, Beschreibung, Schwierigkeit)
springt(SID[Sprung], Startnummer[Springer], Durchgang)
\end{liRelationenSchemaFormat}

\begin{bRelationenModell}
\bRelationMenge{Springer}{\bPrimaer{Startnummer}, Nachname, Vorname, Geburtsdatum, Körpergröße}

\bRelationMenge{Sprung}{\bPrimaer{SID}, Beschreibung, Schwierigkeit}

\bRelationMenge{springt}{\bPrimaer{SID, Startnummer, Durchgang}}

FK (SID) referenziert Sprung (SID)\\
FK (Startnummer) referenziert Springer (Startnummer)
\end{bRelationenModell}

\begin{bAdditum}[Übungsdatenbank]
% Datenbankname: turmspringen
\begin{minted}{sql}
CREATE TABLE Springer (
  Startnummer INTEGER PRIMARY KEY,
  Nachname VARCHAR(20),
  Vorname VARCHAR(20),
  Geburtsdatum DATE,
  Körpergröße INTEGER
);

CREATE TABLE Sprung (
  SID INTEGER PRIMARY KEY,
  Beschreibung VARCHAR(50),
  Schwierigkeit INTEGER
);

CREATE TABLE springt (
  SID INTEGER REFERENCES Sprung(SID),
  Startnummer INTEGER REFERENCES Springer(Startnummer),
  Durchgang INTEGER
);

INSERT INTO Springer VALUES
  (1, 'Schrempf', 'Andreas', '1998-01-23', 190),
  (2, 'Schulz', 'Alexej', '1999-12-22', 182);

INSERT INTO Sprung VALUES
  (1, '10m', 2),
  (2, '15m', 5);

INSERT INTO springt VALUES
  (1, 1, 1),
  (1, 1, 2),
  (2, 2, 1);
\end{minted}
\index{SQL mit Übungsdatenbank}
\end{bAdditum}

\noindent
Das Attribut Schwierigkeit kann die Werte 1 bis 10 annehmen, das
Attribut Durchgang ist positiv und ganzzahlig. Die Körpergröße der
Springer ist in Zentimeter angegeben.

\begin{enumerate}

%%
% (a)
%%

\item Welche Springer sind größer als 1,80 m? Schreiben Sie eine
SQL-Anweisung, welche in der Ausgabe mit dem größten Springer beginnt.

\begin{bAntwort}
\begin{minted}{sql}
SELECT Vorname, Nachname, Körpergröße
FROM Springer
WHERE Körpergröße > 180
ORDER BY Körpergröße DESC;
\end{minted}
\end{bAntwort}

%%
% (b)
%%

\item Welche Springer haben im ersten Durchgang einen Sprung mit einer
Schwierigkeit von unter 6 gezeigt? Schreiben Sie eine SQL-Anweisung,
welche Startnummer und Nachname dieser Springer ausgibt.

\begin{bAntwort}
\begin{minted}{sql}
SELECT Springer.Startnummer, Springer.Nachname
FROM Springer, Sprung, springt
WHERE
  Sprung.SID = springt.SID AND
  Springer.Startnummer = springt.Startnummer AND
  springt.Durchgang = 1 AND
  Sprung.Schwierigkeit < 6;
\end{minted}
\end{bAntwort}

%%
% (c)
%%

\item Formulieren Sie in Umgangssprache, aber trotzdem möglichst
präzise, wonach mit folgender Abfrage gesucht wird:\index{GROUP BY}

\begin{minted}{sql}
SELECT springt.Startnummer, s.Nachname, s.Vorname, MAX(springt.Durchgang)
FROM springt, Springer s
WHERE springt.Startnummer = s.Startnummer
GROUP BY springt.Startnummer, s.Nachname, s.Vorname
\end{minted}

\begin{bAntwort}
Die Abfrage gibt die Startnummer, den Nachnamen, den Vornamen und
die Anzahl der Sprünge, d. h. die Anzahl der Durchgänge der
einzelnen Springer an.
\end{bAntwort}

%%
%
%%

\item Gesucht ist die \emph{„durchschnittliche Körpergröße“} all der
Springer, die vor dem 01.01.2000 geboren wurden. Formulieren Sie eine
SQL-Anweisung, wobei die Spalte mit der durchschnittlichen Körpergröße
genau diesen Namen \emph{„durchschnittliche Körpergröße“} haben soll.

\begin{bAntwort}
Umlaute und Leerzeichen sind bei Spaltenbeschriftungen nicht erlaubt.

\begin{minted}{sql}
SELECT AVG(Körpergröße) AS durchschnittliche_Koerpergroesse
FROM SPRINGER
WHERE Geburtsdatum < DATE('2000-01-01');
\end{minted}
\end{bAntwort}

oder

\begin{bAntwort}
\begin{minted}{sql}
SELECT AVG(Körpergröße) AS durchschnittliche_Koerpergroesse
FROM SPRINGER
WHERE Geburtsdatum < '01.01.2000';
\end{minted}
\end{bAntwort}

\end{enumerate}
\end{document}
