196 lines
5.4 KiB
Markdown
196 lines
5.4 KiB
Markdown
|
# 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)
|
||
|
```
|