Progress on select-group.md and file move

- Created select-group.md
- Created select-alias.md from README.md so it's its own file.
This commit is contained in:
Sangelo 2023-04-13 22:00:36 +02:00
parent f6a4a92264
commit b2fa196612
3 changed files with 121 additions and 28 deletions

View File

@ -2,32 +2,7 @@
## Inhaltsverzeichnis
- [Tag 5](#tag-5)
- [Inhaltsverzeichnis](#inhaltsverzeichnis)
- [Select Alias](#select-alias)
- [Select Alias \[↗\]](select-alias.md)
- [Select Join \[↗\]](select-join.md)
- [Aggregatsfunktionen \[↗\]](aggregatsfunktionen.md)
## Select Alias
SQL Script-Ergänzung:
```sql
-- -- Aufgabe 1 -- --
SELECT kundenliste.kunde_id, kundenliste.name, kundenliste.fk_ort_postleitzahl
FROM kunden AS kundenliste
WHERE kundenliste.fk_ort_postleitzahl > 80000;
SELECT o.name, k.name, k.fk_ort_postleitzahl
FROM kunden AS k INNER JOIN orte AS o
ON k.fk_ort_postleitzahl = o.id_postleitzahl
WHERE o.name LIKE '%n';
-- -- Aufgabe 2 -- --
SELECT k.kunde_id, k.name, prfz.name
FROM kunden AS k INNER JOIN orte AS prfz
ON prfz.id_postleitzahl = k.fk_ort_postleitzahl
ORDER BY k.kunde_id;
SELECT k.name, o.id_postleitzahl, o.name
FROM kunden AS k INNER JOIN orte AS o
ON k.fk_ort_postleitzahl = o.id_postleitzahl
WHERE k.name LIKE '%a%'
AND o.name LIKE '%u%';
```
- [Select Group \[↗\]](select-group.md)
- [Aggregatsfunktionen \[↗\]](aggregatsfunktionen.md)

25
Tage/5/select-alias.md Normal file
View File

@ -0,0 +1,25 @@
# Select Alias
```sql
-- -- Aufgabe 1 -- --
SELECT kundenliste.kunde_id, kundenliste.name, kundenliste.fk_ort_postleitzahl
FROM kunden AS kundenliste
WHERE kundenliste.fk_ort_postleitzahl > 80000;
SELECT o.name, k.name, k.fk_ort_postleitzahl
FROM kunden AS k INNER JOIN orte AS o
ON k.fk_ort_postleitzahl = o.id_postleitzahl
WHERE o.name LIKE '%n';
-- -- Aufgabe 2 -- --
SELECT k.kunde_id, k.name, prfz.name
FROM kunden AS k INNER JOIN orte AS prfz
ON prfz.id_postleitzahl = k.fk_ort_postleitzahl
ORDER BY k.kunde_id;
SELECT k.name, o.id_postleitzahl, o.name
FROM kunden AS k INNER JOIN orte AS o
ON k.fk_ort_postleitzahl = o.id_postleitzahl
WHERE k.name LIKE '%a%'
AND o.name LIKE '%u%';
```

93
Tage/5/select-group.md Normal file
View File

@ -0,0 +1,93 @@
# 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
```