Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [14.11.2019 13:00] – sbel | faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [18.01.2022 15:05] – [Tabelle] sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== SQL – Gruppierungen ====== | ====== SQL – Gruppierungen ====== | ||
+ | |||
+ | ===== Was sind Gruppierungen? | ||
+ | |||
Datensätze, | Datensätze, | ||
Zeile 7: | Zeile 10: | ||
| {{ .: | | {{ .: | ||
| | '' | | | '' | ||
- | | | {{ : | + | | | {{ .: |
- | + | ||
Alle Artikel mit dem Preis von 1,00 Euro werden durch die Gruppierung auf einen Datensatz " | Alle Artikel mit dem Preis von 1,00 Euro werden durch die Gruppierung auf einen Datensatz " | ||
Im Falle der zweiten Gruppierungsklausel wird zusätzlich der Gesamtbestand aller Artikel einer Preiskategorie mithilfe der Aggregationsfunktion '' | Im Falle der zweiten Gruppierungsklausel wird zusätzlich der Gesamtbestand aller Artikel einer Preiskategorie mithilfe der Aggregationsfunktion '' | ||
- | {{ : | + | {{ .: |
- | Genau genommen ist die Verwendung der Wilcard | + | Genau genommen ist die Verwendung der Wildcard '' |
Bei restriktiverer Einstellung des Datenbanksystems müsste die Auswahl von Spalten, nach denen nicht gruppiert wird, eine Fehlermeldung liefern. | Bei restriktiverer Einstellung des Datenbanksystems müsste die Auswahl von Spalten, nach denen nicht gruppiert wird, eine Fehlermeldung liefern. | ||
+ | |||
+ | ===== Mehrere Gruppen ===== | ||
+ | |||
Man kann auch gleichzeitig nach mehreren Merkmalen gruppieren, indem man einen Ausdruck der Form | Man kann auch gleichzeitig nach mehreren Merkmalen gruppieren, indem man einen Ausdruck der Form | ||
Zeile 25: | Zeile 29: | ||
</ | </ | ||
- | verwendet. Hier werden die Verkäufe nach Jahr, Land und Produkt gruppiert | + | verwendet. Hier werden die Verkäufe nach Jahr, Land und Produkt gruppiert. |
+ | |||
+ | ===== Aliase für Tabellenspalten ===== | ||
+ | |||
+ | Manchmal ist es praktisch, Tabellenspalten, | ||
+ | |||
+ | <code sql> | ||
+ | SELECT KundenID AS ID, KundenName AS Name | ||
+ | FROM Kunden WHERE Name LIKE ' | ||
+ | </ | ||
+ | |||
+ | Damit entstehen die " | ||
+ | |||
+ | So kann man auch Berechnungen mit " | ||
+ | |||
+ | <code sql> | ||
+ | SELECT AngestelltenID AS ID, AVG(AngestelltenGehalt) AS Durchschnittsgehalt | ||
+ | FROM Mitarbeiter WHERE Angestelltengehalt > 2000 GROUP BY Abteilung; | ||
+ | </ | ||
+ | |||
===== Aufgaben ===== | ===== Aufgaben ===== | ||
- | Lösen Sie die folgenden Aufgaben im SQL-Abfragefenster von phpMyAdmin | + | Löse die folgenden Aufgaben im SQL-Abfragefenster von phpMyAdmin und speichere deine Lösungen in einer Textdatei |
+ | ---- | ||
+ | {{:aufgabe.png? | ||
+ | === (A1) === | ||
- | (1) Neben der Summenfunktion gibt es weitere Berechnungsfunktionen für zahlenwertige Spalten. | + | Was erfragen die beiden SQL Abfragen im Abschnitt zum Thema Aliase? Welche Rückschlüsse lässt das auf die Struktur der Tabellen zu? |
+ | |||
+ | ---- | ||
+ | |||
+ | Importiere die Tabellen der Datenbank {{ : | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Neben der Summenfunktion gibt es weitere Berechnungsfunktionen für zahlenwertige Spalten. | ||
<code sql> | <code sql> | ||
SELECT *, | SELECT *, | ||
Zeile 42: | Zeile 79: | ||
+ | ^ Funktion | ||
+ | | AVG | ||
+ | | COUNT | ||
+ | | MAX | ||
+ | | MIN | ||
+ | | SUM | ||
- | ^Funktion ^ Bedeutung ^ Wert in Gruppe '' | ||
- | | AVG | ||
- | | COUNT | ||
- | | MAX | ||
- | | MIN | ||
- | | SUM | ||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
- | (2) Gib den jeweiligen Gesamtbestand der Artikel in den verschiedenen Preiskategorien unter 10,00EUR an. | + | (i) Gib den jeweiligen Gesamtbestand der Artikel in den verschiedenen Preiskategorien unter 10,00EUR an. |
- | (3) Gib Gruppen mit gleichem Bestand und Preis zurück. | + | (ii) Gib Gruppen mit gleichem Bestand und Preis zurück. |
- | (4) Notiere ohne phpMyAdmin zu verwenden, was die folgende SQL-Abfrage ausgibt: | + | (iii) Notiere ohne phpMyAdmin zu verwenden, was die folgende SQL-Abfrage ausgibt: |
<code sql> | <code sql> | ||
SELECT ABestand, | SELECT ABestand, | ||
FROM artikel | FROM artikel | ||
GROUP BY ABestand | GROUP BY ABestand | ||
- | ORDER BY Abestand | + | ORDER BY ABestand |
</ | </ | ||
| | ||
- | (5) Informiere dich über die '' | + | (iv) Informiere dich über die '' |
- | (6) Gib alle Preiskategorien aus, in denen der maximal erzielbare Umsatz über 3.000,00 Euro liegt. Ist die Aufgabe auch mittels '' | + | (v) Gib alle Preiskategorien aus, in denen der maximal erzielbare Umsatz über 3.000,00 Euro liegt. Ist die Aufgabe auch mittels '' |
([[.lsg: | ([[.lsg: | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A4) === | ||
+ | |||
+ | Arbeite nun wieder mit unserer Adressdatenbank, | ||
+ | |||
+ | - Gib die Zahl der Personen an, die in den verschiedenen Kundenkategorien sind. | ||
+ | - Welche durchschnittliche Bonuspunktzahl haben die Mitglieder der verschiedenen Kunden-Kategorien? | ||
+ | - Gruppiere die Adressliste nach Kunden-Kategorien und Bonuspunkte (In einer Gruppe sollen also alle Datensätze sein, die dieselbe Kundenkategorie und dieselbe Bonunspunktzahl haben). Gibt auf diese Weise die Zahl der Personen in der jeweiligen Gruoppe, die Kategorie und die Zahl der Bonuspunkte aus. | ||
+ | - Gib bei der vorherigen Abfrage nur die Gruppen aus, die mehr als ein Mitglied haben. Geht das mit einem '' | ||
+ | - Erzeuge eine Liste mit der Zahl der Gold-Kunden mit mehr als 1000 Bonuspunkten gruppiert nach Stadt, absteigend sortiert nach der Zahl der Bonuspunkte. | ||
+ | - Erzeuge eine Liste mit der Zahl aller Kunden, die keine leere Kundenkategorie haben mit mehr als 1000 Bonuspunkten gruppiert nach Stadt und Kategorie, absteigend sortiert nach der Zahl der gesamten Bonuspunkte für die jeweilige Gruppe. | ||
+ | |||
+ | ==== Material ==== | ||
+ | |||
+ | |||
+ | {{simplefilelist>: |