Structured Query Language
Aufgabe 1
Sie sollen SQL-Abfragen für folgende Zeiterfassungsdatenbank erstellen.
Hinweis: Jahresübergreifender Urlaub generiert zwei Datensätze.
a) Für den Mitarbeiter Ulrich Schmidt wurde in der Tabelle Fehlzeit ein Datensatz falsch erfasst:
Statt einer zweitägigen "Dienstreise" vom 30.06. bis 01.07.2022 wurde versehentlich ein eintägiger "Urlaub" für den 30.06.2022 eingetragen (siehe Tabelle Fehlzeit).
Erstellen Sie eine SQL-Anweisung, mit der die Korrektur durchgefuhrt werden kann.
b) Erstellen Sie eine SQL-Abfrage, welche die Urlaubstage aller Mitarbeiter im Jahr 2021 ermittelt.
Beispielausgabe:
811 |
Müller |
Jens |
15
|
812 |
Scholz |
Birgit |
10
|
815 |
Schmidt |
Ulrich |
0
|
817 |
Storck |
Hans |
0
|
841 |
Ullmann |
Franz |
21 |
c) Die bestehende Datenbank soll wie im Folgenden beschrieben verändert werden.
Erstellen Sie dazu jeweils die SQL-Anweisung.
ca) Die Tabelle Fehlzeit soll gelöscht werden.
cb) Es soll eine Tabelle Fehlzeitgrund mit folgenden Feldern erstellt werden.
Grund_ID |
Grund |
1 |
Urlaub |
2 |
Krank |
3 |
Dienstreise |
Hinweis: Es müssen keine Datensätze eingefügt werden.
cc) Die Tabelle Fehlzeit soll in der dargestellten Form neu erstellt werden.In die Tabelle Fehlzeit sollen in der Spalte Grund_lD nur solche Werte eingetragen werden können, die in der Tabelle Fehlzeitgrund als Primärschlüssel vorkommen.
FZ_ID |
MA_ID |
Von_Datum |
Bis_Datum |
Grund_ID |
Fehltage |
1 |
811 |
18.10.2021 |
22.10.2021 |
1 |
5 |
2 |
902 |
18.04.2021 |
05.05.2021 |
2 |
16 |
Aufgabe 2
Ein gemeinnütziger Verein vermittelt Dienstleistungen von freiwilligen Helfern (hier die Mitglieder) an Hilfe suchende Bürger. Informationen zu Mitgliedern, ihren jeweiligen Angeboten und Bewertungen, stehen in folgender Datenbank zur Verfügung:
Formulieren Sie SQL-Abfragen für die nachstehenden Aufgabenstellungen.
a) Geben Sie alle Attribute des jüngsten Mitglieds aus.
b) Ermitteln Sie eine Mitgliederliste aufsteigend sortiert nach der durchschnittliche Bewertung für die Leistungsart "Kinderbetreuung".
idMitglied |
mitgliedName |
Durchschnitt |
3 |
Müller |
2.1 |
2 |
Maier |
3.0 |
25 |
Spielmann |
4.5 |
... |
|
|
c) Erstellen Sie eine Angebotsliste, die alle Mitglieder und die entsprechende Leistungsart des Angebots ausgibt, welche donnerstags von 14:00 Uhr bis 16:00 Uhr zur Verfügung stehen.
Beispielausgabe:
idMitglied |
mitgliedName |
artBezeichnung |
wochentag |
vonZeit |
bisZeit |
4 |
Hauser |
Gartenarbeit |
Donnerstag |
14:00 |
16:00 |
4 |
Hauser |
Hausarbeit |
Donnerstag |
14:00 |
16:00 |
2 |
Maier |
Kinderbetreuung |
Donnerstag |
14:00 |
16:00 |
d) Erstellen Sie eine neue Tabelle MitgliedArchiv. Transferieren Sie alle Mitglieder, die kein Angebot eingestellt haben, in diese Tabelle. Löschen Sie diese inaktiven Mitglieder aus der Tabelle Mitglied.
Aufgabe 3
Gegeben sei folgendes Datenbankmodell eines Stromversorgers zur Speicherung von Kunden- und Verbrauchsdaten:
Zur Abfrage und Pflege der Daten sollen die folgenden SQL-Anweisungen erstellt werden:
a) Indizieren Sie in der Tabelle Zaehlerstand die Spalte ZST_Datum. Der Index soll die Bezeichnung Idx_Datum bekommen.
b) Löschen Sie alle Haushalte, bei denen kein Zähler hinterlegt wurde.
c) Erstellen Sie eine SQL-Abfrage, mit der Sie alle Haushalte mit der Anzahl der vorhandenen Zähler erhalten. Haushalte mit den wenigsten Zählern sollen unten aufgeführt werden.
Hinweis: Beachten Sie die Spaltenbezeichnungen.
Beispiel-Ergebnistabelle:
Nachname |
AnzZaehler |
Meier |
2 |
Hinz |
2 |
Müller |
1 |
Conrad |
0 |
d) Erstellen Sie eine SQL-Abfrage, mit der Sie die Haushalte mit den vorhandenen Zählern und dem jeweiligen Verbrauch zwischen den beiden Ablesungen in den Jahren 2021 und 2022 erhalten. Die Ergebnisse sollen nach Nachnamen sortiert
werden. Es findet pro Jahr nur eine Eintragung statt.
Hinweis: Beachten Sie die Spaltenbezeichnungen.
Beispiel-Ergebnistabelle:
Nachname |
Zaehlernummer |
Verbrauch |
Hinz |
0037889999 |
2701 |
Hinz |
0037890053 |
8974 |
Meier |
8885688977 |
2745 |
Meier |
1666856771 |
2034 |
Müller |
5658897888 |
NULL |