m164/Tage/5/aggregatsfunktionen.md

5.4 KiB

Aggregatsfunktionen

Aufgaben

  1. Welches ist das niedrigste/höchste Gehalt eines Lehrers?
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)
  1. Was ist das niedrigste Gehalt, das einer unserer Mathelehrer bekommt?
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)
  1. Was ist der beste Notendurchschnitt der Noten Deutsch/Mathe?
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.
  1. Wie viel Einwohner hat der größte Ort, wie viel der Kleinste? Ausgabe "Höchste Einwohnerzahl", "Niedrigste Einwohnerzahl"
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)
  1. 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".
MariaDB [uebungSchule]> select max(einwohnerzahl) - min(einwohnerzahl) as differenz from orte;
+------------+
| differenz |
+------------+
|     259834 |
+------------+
1 row in set (0.000 sec)
  1. Wie viele Schüler haben wir in der Datenbank?
MariaDB [uebungSchule]> select count(*) from schueler;
+----------+
| count(*) |
+----------+
|      103 |
+----------+
1 row in set (0.000 sec)
  1. Wie viele Schüler haben ein Smartphone?
MariaDB [uebungSchule]> select count(idSmartphones) from schueler;
+----------------------+
| count(idSmartphones) |
+----------------------+
|                   98 |
+----------------------+
1 row in set (0.000 sec)
  1. Wie viele Schüler haben ein Smartphone der Firma Samsung oder der Firma HTC?
MariaDB [uebungSchule]> select count(idSmartphones) from schueler where idSmartphones = 1 or idSmartphones = 3;
+----------------------+
| COUNT(idSmartphones) |
+----------------------+
|                   39 |
+----------------------+
1 row in set (0.000 sec)
  1. Wie viele Schüler wohnen in Waldkirch?
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)
  1. Wie viele Schüler, die bei Herrn Bohnert Unterricht haben, wohnen in Emmendingen?
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)
  1. Wie viele Schüler unterrichtet Frau Zelawat?
MariaDB [uebungSchule]> select count(idSchueler) from lehrer_hat_schueler where idLehrer = 28;
+-------------------+
| count(idSchueler) |
+-------------------+
|                35 |
+-------------------+
1 row in set (0.001 sec)
  1. Wie viele Schüler russischer Nationalität unterrichtet Frau Zelawat?
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)
  1. Welcher Lehrer verdient am meisten? (Achtung: Falle! Überprüfen Sie Ihr Ergebnis.)
MariaDB [uebungSchule]> select name, max(gehalt) from lehrer;
+---------+-------------+
| name    | max(gehalt) |
+---------+-------------+
| Schmitt |        6581 |
+---------+-------------+
1 row in set (0.000 sec)