93 lines
4.3 KiB
Markdown
93 lines
4.3 KiB
Markdown
|
# 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
|
||
|
```
|