# Aggregatsfunktionen ## Aufgaben 1. Welches ist das niedrigste/höchste Gehalt eines Lehrers? ```sql MariaDB [uebungSchule]> select min(gehalt) from lehrer; +-------------+ | min(gehalt) | +-------------+ | 1740 | +-------------+ 1 row in set (0.000 sec) ------ MariaDB [uebungSchule]> select max(gehalt) from lehrer; +-------------+ | max(gehalt) | +-------------+ | 6581 | +-------------+ 1 row in set (0.000 sec) ``` 2. Was ist das niedrigste Gehalt, das einer unserer Mathelehrer bekommt? ```sql MariaDB [uebungSchule]> select min(gehalt) from lehrer where id in (select idLehrer from lehrer_hat_faecher where idFaecher = (select id from faecher where fachbezeichnung = 'Mathe')); +-------------+ | min(gehalt) | +-------------+ | 2490 | +-------------+ 1 row in set (0.001 sec) ``` 3. Was ist der beste Notendurchschnitt der Noten Deutsch/Mathe? ```sql MariaDB [uebungSchule]> select avg(noteMathe) from schueler; +----------------+ | avg(noteMathe) | +----------------+ | 3.5437 | +----------------+ 1 row in set (0.000 sec) ------ MariaDB [uebungSchule]> select avg(noteDeutsch) from schueler; +------------------+ | avg(noteDeutsch) | +------------------+ | 3.6699 | +------------------+ 1 row in set (0.000 sec) -- Besserer Durchschnitt ist in Deutsch. ``` 4. Wie viel Einwohner hat der größte Ort, wie viel der Kleinste? Ausgabe "Höchste Einwohnerzahl", "Niedrigste Einwohnerzahl" ```sql MariaDB [uebungSchule]> select min(einwohnerzahl) from orte; +--------------------+ | min(einwohnerzahl) | +--------------------+ | 2977 | +--------------------+ 1 row in set (0.000 sec) --- MariaDB [uebungSchule]> select max(einwohnerzahl) from orte; +--------------------+ | max(einwohnerzahl) | +--------------------+ | 262811 | +--------------------+ 1 row in set (0.000 sec) ``` 5. Wie groß ist die Differenz zwischen dem Ort mit den meisten und dem mit den wenigsten Einwohnern (z.B.: kleinster Ort hat 1000 Einwohner, größter Ort hat 3000 - Differenz ist 2000). Ausgabe einer Spalte "Differenz". ```sql MariaDB [uebungSchule]> select max(einwohnerzahl) - min(einwohnerzahl) as differenz from orte; +------------+ | differenz | +------------+ | 259834 | +------------+ 1 row in set (0.000 sec) ``` 6. Wie viele Schüler haben wir in der Datenbank? ```sql MariaDB [uebungSchule]> select count(*) from schueler; +----------+ | count(*) | +----------+ | 103 | +----------+ 1 row in set (0.000 sec) ``` 7. Wie viele Schüler haben ein Smartphone? ```sql MariaDB [uebungSchule]> select count(idSmartphones) from schueler; +----------------------+ | count(idSmartphones) | +----------------------+ | 98 | +----------------------+ 1 row in set (0.000 sec) ``` 8. Wie viele Schüler haben ein Smartphone der Firma Samsung oder der Firma HTC? ```sql MariaDB [uebungSchule]> select count(idSmartphones) from schueler where idSmartphones = 1 or idSmartphones = 3; +----------------------+ | COUNT(idSmartphones) | +----------------------+ | 39 | +----------------------+ 1 row in set (0.000 sec) ``` 9. Wie viele Schüler wohnen in Waldkirch? ```sql MariaDB [uebungSchule]> select * from orte; +----+--------------+-------------+---------+---------------+ | id | postleitzahl | name | vorwahl | einwohnerzahl | +----+--------------+-------------+---------+---------------+ | 1 | 79312 | Emmendingen | 07641 | 29612 | | 2 | 79311 | Reute | 07641 | 8501 | | 3 | 79312 | Wasser | 07641 | 2977 | | 4 | 79098 | Freiburg | 0761 | 262811 | | 5 | 79206 | Breisach | 07667 | 22719 | | 6 | 79313 | Waldkirch | 07681 | 25020 | +----+--------------+-------------+---------+---------------+ 6 rows in set (0.000 sec) MariaDB [uebungSchule]> select count(idOrte) from schueler where idOrte = 6; +---------------+ | count(idOrte) | +---------------+ | 12 | +---------------+ 1 row in set (0.000 sec) ``` 10. Wie viele Schüler, die bei Herrn Bohnert Unterricht haben, wohnen in Emmendingen? ```sql MariaDB [uebungSchule]> SELECT COUNT(*) -> FROM schueler s -> JOIN lehrer_hat_schueler l ON s.id = l.idSchueler -> JOIN lehrer le ON l.idLehrer = le.id -> WHERE le.id = 4 AND s.idOrte = 1; +----------+ | COUNT(*) | +----------+ | 1 | +----------+ 1 row in set (0.001 sec) ``` 11. Wie viele Schüler unterrichtet Frau Zelawat? ```sql MariaDB [uebungSchule]> select count(idSchueler) from lehrer_hat_schueler where idLehrer = 28; +-------------------+ | count(idSchueler) | +-------------------+ | 35 | +-------------------+ 1 row in set (0.001 sec) ``` 12. Wie viele Schüler russischer Nationalität unterrichtet Frau Zelawat? ```sql MariaDB [uebungSchule]> SELECT COUNT(*) -> FROM schueler -> JOIN lehrer_hat_schueler ls ON schueler.id = ls.idSchueler -> JOIN lehrer ON ls.idLehrer = lehrer.id -> WHERE lehrer.id = 28 AND schueler.nationalitaet = "RU"; +----------+ | COUNT(*) | +----------+ | 16 | +----------+ 1 row in set (0.001 sec) ``` 13. Welcher Lehrer verdient am meisten? (Achtung: Falle! Überprüfen Sie Ihr Ergebnis.) ```sql MariaDB [uebungSchule]> select name, max(gehalt) from lehrer; +---------+-------------+ | name | max(gehalt) | +---------+-------------+ | Schmitt | 6581 | +---------+-------------+ 1 row in set (0.000 sec) ```