Aufgabe 3 - SQL-Abfragen · Abitur NRW Informatik LK · Nachtermin 2021

Thema: SQL-Abfragen · Aus der Prüfung LK · Nachtermin (2021)

Aufgabenstellung

Aufgabenstellung:

Das Unternehmen GoBigOrGoHome24 will die Gesundheit seiner Belegschaft fördern, indem es zur regelmäßigen Teilnahme an Sportangeboten anregt. Die Beschäftigten wählen aus einem breiten Angebot verschiedener Sportarten und melden sich an. Ein Sportangebot umfasst eine zuvor festgelegte Zahl an Einheiten, die zu absolvieren sind. Nimmt eine Mitarbeiterin oder ein Mitarbeiter an allen Einheiten teil, übernimmt die Firma die Kosten des Angebots in voller Höhe. Fehlt jemand unentschuldigt, verringert sich der Zuschuss der Firma. Die Länge einer Sporteinheit wird in Minuten angegeben.

Um die Daten zu verwalten, plant die Firma den Aufbau einer relationalen Datenbank, die auf der folgenden Teilmodellierung beruht:

Die folgenden Aufgaben beziehen sich auf das Datenbankschema aus Abbildung 2, das nur einen Teil der gesamten Datenbank abbildet. Beispieldaten dazu finden sich im Anhang.

Anlage: Ausschnitt aus den Beispieldaten zum Datenbankschema aus Abbildung 2

Teilnehmer

ID · Vorname · Nachname

1 · Ada · Lovelace

2 · John · von Neumann

3 · Alan · Turing

4 · Konrad · Zuse

5 · Tim · Berners-Lee

Sportangebot

ID · Sportart · Trainername

42 · Zumba · Joseph Weizenbaum

101 · Fitness · Gottfried Wilhelm Leibniz

2020 · Fitness · Gottfried Wilhelm Leibniz

2021 · Yoga · Joseph Weizenbaum

Sporteinheit

ID · Datum · Thema · Dauer · SportangebotID

1 · 2020-08-13 · Ausdauer Laufband · 90 · 101

2 · 2020-08-13 · Grundschritte · 45 · 42

3 · 2020-08-14 · Tanzausdauer · 45 · 42

4 · 2020-08-17 · Zirkeltraining · 90 · 101

5 · 2020-08-20 · Ausdauer Fahrrad · 90 · 101

6 · 2020-08-20 · Spezialschritte · 45 · 42

7 · 2020-08-21 · Intervalltanzen · 45 · 42

8 · 2020-08-24 · Kräftigung des Rumpfes · 90 · 101

9 · 2020-08-27 · Eigene Tanzchoreographie · 45 · 42

angemeldet

TeilnehmerID · SportangebotID

1 · 42

1 · 101

1 · 2020

2 · 42

3 · 42

3 · 101

4 · 101

5 · 101

fehlt

TeilnehmerID · SporteinheitID · istEntschuldigt

1 · 1 · ja

1 · 2 · ja

3 · 9 · ja

4 · 8 · nein

5 · 4 · ja

5 · 5 · nein

Teilaufgabe b) [11 Punkte]

Es sollen die folgenden Informationen aus der Datenbank abgerufen werden:

Entwerfen Sie zu jeder der oben genannten Anfragen eine passende SQL-Anweisung.

i.

Ermittelt werden sollen die Namen sämtlicher Trainerinnen und Trainer zusammen mit der Zahl der Sportangebote, die sie jeweils durchführen. Die Ausgabe soll aufsteigend nach dem Namen der Trainerinnen und Trainer geordnet sein. [3 Punkte]

ii.

Gesucht wird eine Übersicht über die Teilnehmerinnen und Teilnehmer, die Sporteinheiten versäumt haben. Für jede Person sollen Vorname, Nachname und die Anzahl ihrer versäumten Sporteinheiten ausgegeben werden. [4 Punkte]

iii.

Ermitteln sollen Sie Vor- und Nachname aller Personen, die zu mindestens einem Sportangebot angemeldet sind und bisher nie gefehlt haben. [4 Punkte]

Teilaufgabe c) [8 Punkte]

Gegeben ist die folgende SQL-Anweisung:

1 SELECT *

2 FROM (

3 SELECT Sportangebot.Sportart, Sportangebot.Trainername,

4 COUNT(angemeldet.SportangebotID) as X

5 FROM Sportangebot

6 LEFT JOIN angemeldet

7 ON Sportangebot.ID = angemeldet.SportangebotID

8 GROUP BY Sportangebot.ID

9) AS A

10 WHERE A.X >= 2

11 ORDER BY A.X DESC

1.

Analysieren und erläutern Sie erst die Unterabfrage (Zeilen 3 bis 9) und danach die vollständige SQL-Anweisung. [6 Punkte]

2.

Erläutern Sie, welche Information die gesamte SQL-Anweisung im Sachzusammenhang liefert. [2 Punkte]

Aufgabenstellung: Aufgabe 3 - SQL-Abfragen · Abitur NRW Informatik LK · Nachtermin 2021

Lösung

Nach den offiziellen Korrekturhinweisen

b) i. Ermittelt werden sollen die Namen sämtlicher Trainerinnen und Trainer zusammen mit der Zahl der Sportangebote, die sie jeweils durchführen. Die Ausgabe soll aufsteigend nach dem Namen der Trainerinnen und Trainer geordnet sein.

Lösung: ```sql SELECT Trainername, COUNT(Trainername) FROM Sportangebot GROUP BY Trainername ORDER BY Trainername ASC ```

b) ii. Gesucht wird eine Übersicht über die Teilnehmerinnen und Teilnehmer, die Sporteinheiten versäumt haben. Für jede Person sollen Vorname, Nachname und die Anzahl ihrer versäumten Sporteinheiten ausgegeben werden.

Lösung: ```sql SELECT Teilnehmer.Vorname, Teilnehmer.Nachname, COUNT(*) FROM Teilnehmer INNER JOIN fehlt ON Teilnehmer.ID = fehlt.TeilnehmerID GROUP BY Teilnehmer.ID ```

b) iii. Ermitteln sollen Sie Vor- und Nachname aller Personen, die zu mindestens einem Sportangebot angemeldet sind und bisher nie gefehlt haben.

Lösung: ```sql SELECT DISTINCT Teilnehmer.Vorname, Teilnehmer.Nachname FROM Teilnehmer INNER JOIN angemeldet ON Teilnehmer.ID = angemeldet.TeilnehmerID WHERE Teilnehmer.ID NOT IN ( SELECT fehlt.TeilnehmerID FROM fehlt ) ```

c) 1. Analysieren und erläutern Sie erst die Unterabfrage (Zeilen 3 bis 9) und danach die vollständige SQL-Anweisung.

Lösung: Unterabfrage (Zeilen 3 – 9): Die Unterabfrage ermittelt für jedes Sportangebot die Sportart, den Namen der Trainerin bzw. des Trainers und die Anzahl der angemeldeten Personen. Durch den Left Join wird sichergestellt, dass auch die Sportangebote ohne Anmeldungen aufgelistet würden. Gesamte SQL-Anweisung: Durch die Bedingung in Zeile 10 werden von der Unterabfrage nur die Datensätze berücksichtigt, in denen die Anzahl der Anmeldungen größer gleich 2 ist. Das Ergebnis wird absteigend nach der Zahl der Anmeldungen sortiert.

c) 2. Erläutern Sie, welche Information die gesamte SQL-Anweisung im Sachzusammenhang liefert.

Lösung: Die gesamte SQL-Anweisung ermittelt für alle Sportangebote mit zwei oder mehr Anmeldungen die Sportart, den Namen der Trainerin bzw. des Trainers und die Anzahl der angemeldeten Personen. Das Ergebnis ist absteigend nach der Zahl der Anmeldungen sortiert.

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe 3 - SQL-Abfragen · LK · Haupttermin 2021

Mehr Aufgaben zu SQL-Abfragen