m164/Tage/5/aggregatsfunktionen.md

196 lines
5.4 KiB
Markdown
Raw Normal View History

# 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)
```