# SELECT GROUP ### SELECT GROUP BY & ORDER BY 1. Geben Sie die Anzahl aller Schüler aus, gruppiert nach Nationalität (Spalten: "Anzahl", "Nationalität"). ```sql 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) ``` 2. Wie viele Schüler wohnen in den einzelnen Orten? Ausgabe: "Ort", "Anzahl der Schüler" (bitte genauso), sortiert nach Anzahl der Schüler absteigend ```sql 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) ``` 3. Erstellen Sie eine Liste, aus der ersichtlich wird, wie viele Lehrer die einzelnen Fächer unterrichten, sortiert nach Anzahl absteigend. Ausgabe: Fachbezeichnung, Anzahl ```sql 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) ``` 4. 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). ```sql 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) ``` 5. 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" ```sql -- Not completed ```