diff --git a/Tage/5/README.md b/Tage/5/README.md index 0cb5123..4f8a685 100644 --- a/Tage/5/README.md +++ b/Tage/5/README.md @@ -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%'; -``` \ No newline at end of file + - [Select Group \[↗\]](select-group.md) + - [Aggregatsfunktionen \[↗\]](aggregatsfunktionen.md) \ No newline at end of file diff --git a/Tage/5/select-alias.md b/Tage/5/select-alias.md new file mode 100644 index 0000000..c36c6b9 --- /dev/null +++ b/Tage/5/select-alias.md @@ -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%'; +``` \ No newline at end of file diff --git a/Tage/5/select-group.md b/Tage/5/select-group.md new file mode 100644 index 0000000..ba221a7 --- /dev/null +++ b/Tage/5/select-group.md @@ -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 +``` \ No newline at end of file