m164/Tage/5/select-group.md

4.3 KiB

SELECT GROUP

SELECT GROUP BY & ORDER BY

  1. Geben Sie die Anzahl aller Schüler aus, gruppiert nach Nationalität (Spalten: "Anzahl", "Nationalität").
MariaDB [uebungSchule]> select count(id), nationalitaet from schueler group by nationalitaet;
+-----------+---------------+
| count(id) | nationalitaet |
+-----------+---------------+
|        26 | GB            |
|        50 | RU            |
|        27 | USA           |
+-----------+---------------+
3 rows in set (0.000 sec)
  1. Wie viele Schüler wohnen in den einzelnen Orten? Ausgabe: "Ort", "Anzahl der Schüler" (bitte genauso), sortiert nach Anzahl der Schüler absteigend
MariaDB [uebungSchule]> SELECT orte.name AS Ort, COUNT(schueler.id) AS `Anzahl Schüler` FROM orte JOIN schueler ON orte.id = schueler.idOrte GROUP BY orte.name ORDER BY 'Anzahl Schüler' DESC;
+-------------+-----------------+
| Ort         | Anzahl Schüler  |
+-------------+-----------------+
| Wasser      |              21 |
| Waldkirch   |              12 |
| Breisach    |              28 |
| Freiburg    |              21 |
| Reute       |              16 |
| Emmendingen |               5 |
+-------------+-----------------+
6 rows in set (0.001 sec)
  1. Erstellen Sie eine Liste, aus der ersichtlich wird, wie viele Lehrer die einzelnen Fächer unterrichten, sortiert nach Anzahl absteigend. Ausgabe: Fachbezeichnung, Anzahl
MariaDB [uebungSchule]> SELECT faecher.fachbezeichnung AS Fachbezeichnung, COUNT(DISTINCT idLehrer) AS Anzahl FROM lehrer_hat_faecher JOIN faecher ON lehrer_hat_faecher.idFaecher = faecher.id WHERE lehrer_hat_faecher.idFaecher > 0 GROUP BY lehrer_hat_faecher.idFaecher ORDER BY Anzahl DESC;
+-----------------+--------+
| Fachbezeichnung | Anzahl |
+-----------------+--------+
| Englisch        |      7 |
| Biologie        |      7 |
| Chemie          |      6 |
| Religion        |      6 |
| Mathe           |      6 |
| Musik           |      6 |
| Deutsch         |      6 |
| Ethik           |      5 |
| Physik          |      5 |
| Informatik      |      5 |
| Russisch        |      4 |
+-----------------+--------+
11 rows in set (0.001 sec)
  1. Erstellen Sie eine Liste, aus der ersichtlich wird, welche Lehrer die jeweiligen Fächer unterrichten, sortiert nach Anzahl der Lehrer absteigend. Pro Fach bitte nur eine Zeile! Ausgabe: Fachbezeichnung, Lehrerliste (bitte KEINE Spalte, in der die Anzahl der Lehrer steht).
MariaDB [uebungSchule]> SELECT
    -> faecher.fachbezeichnung AS Fachbezeichnung,
    -> GROUP_CONCAT(DISTINCT lehrer.name SEPARATOR ', ') AS Lehrerliste
    -> FROM lehrer_hat_faecher
    -> JOIN faecher ON lehrer_hat_faecher.idFaecher = faecher.id
    -> JOIN lehrer ON lehrer_hat_faecher.idLehrer = lehrer.id
    -> WHERE lehrer_hat_faecher.idFaecher > 0
    -> GROUP BY lehrer_hat_faecher.idFaecher
    -> ORDER BY COUNT(DISTINCT lehrer.id) DESC;
+-----------------+--------------------------------------------------------------+
| Fachbezeichnung | Lehrerliste                                                  |
+-----------------+--------------------------------------------------------------+
| Englisch        | Bauer, Betzold, Bühler, Hartz, Pfeffersack, Rauert, Schmitt  |
| Biologie        | Bruns, Huber, Lürcher, Maler, Müller, Oettle, Tschuck        |
| Deutsch         | Bohner, Bühler, Mahler, Maier, Sauter, Schmitt               |
| Mathe           | Bohner, Bohnert, Metz, Petersen, Ruck, Sauter                |
| Musik           | Bock, Bruns, Hartz, Maler, Ruck, Zelawat                     |
| Religion        | Maler, Müller, Oettle, Sauter, Schneider, Tschuck            |
| Chemie          | Bauer, Betzold, Lürcher, Mahler, Maier, Zelawat              |
| Informatik      | Bock, Bohnert, Hartz, Petersen, Pfeiffer                     |
| Ethik           | Bercher, Huber, Hunger, Ruck, Sauter                         |
| Physik          | Bauer, Bercher, Lürcher, Maier, Metz                         |
| Russisch        | Bauer, Hartz, Pfeiffer, Tschuck                              |
+-----------------+--------------------------------------------------------------+
11 rows in set (0.001 sec)
  1. Wir brauchen eine Liste, die die Schülernamen auflistet und die Fächer, in denen diese Schüler unterrichtet werden. Ausgabe: "Schülername", "Lehrer", "Fächer"
-- Not completed