faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [18.01.2024 08:41] – [Aufgaben] Frank Schiebelfaecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [18.01.2024 08:57] (aktuell) – [Aufgaben] Frank Schiebel
Zeile 122: Zeile 122:
 Arbeite nun wieder mit unserer Adressdatenbank, verwende, wo nötig Aliase. Arbeite nun wieder mit unserer Adressdatenbank, verwende, wo nötig Aliase.
  
-  - Gib die Zahl der Personen an, die in den verschiedenen Kundenkategorien (Gold, Silber, Bronze oder kein Status) sind. +++ Lösung | Hallo +++ +  - Gib die Zahl der Personen an, die in den verschiedenen Kundenkategorien (Gold, Silber, Bronze oder kein Status) sind. \\ ++ Lösung | ''SELECT Kundenstatus, COUNT(`Kundenstatus`)  
-  - Welche durchschnittliche Bonuspunktzahl haben die Mitglieder der verschiedenen Kunden-Kategorien?  +FROM `adressen` 
-  - Gruppiere die Adressliste nach Kunden-Kategorien und Bonuspunkte (In einer Gruppe sollen also alle Datensätze sein, die dieselbe Kundenkategorie und dieselbe Bonuspunktzahl haben). Gibt auf diese Weise die Zahl der Personen in der jeweiligen Gruppe, die Kategorie und die Zahl der Bonuspunkte aus. +GROUP BY `Kundenstatus`;'' ++ 
-  - Gib bei der vorherigen Abfrage nur die Gruppen aus, die mehr als ein Mitglied haben. Geht das mit einem ''WHERE'' Statement? +  - Welche durchschnittliche Bonuspunktzahl haben die Mitglieder der verschiedenen Kunden-Kategorien? \\ ++ Lösung | ''SELECT Kundenstatus, COUNT(`Kundenstatus`), AVG(`Bonuspunkte`) AS Durchschnittspunkte 
-  - Erzeuge eine Liste mit der Zahl der Gold-Kunden mit mehr als 1000 Bonuspunkten gruppiert nach Stadt, absteigend sortiert nach der Zahl der Bonuspunkte. +FROM `adressen` 
-  - 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.+GROUP BY `Kundenstatus`;''++ 
 +  - Gruppiere die Adressliste nach Kunden-Kategorien und Bonuspunkte (In einer Gruppe sollen also alle Datensätze sein, die dieselbe Kundenkategorie und dieselbe Bonuspunktzahl haben). Gibt auf diese Weise die Zahl der Personen in der jeweiligen Gruppe, die Kategorie und die Zahl der Bonuspunkte aus. \\ ++ Lösung | '' SELECT`Kundenstatus`, `Bonuspunkte`, COUNT(*) AS Kundenzahl FROM `adressen` GROUP BY `Kundenstatus`, `Bonuspunkte`; ''++ 
 +  - Gib bei der vorherigen Abfrage nur die Gruppen aus, die mehr als ein Mitglied haben. Geht das mit einem ''WHERE'' Statement? \\ ++ Lösung | ''SELECT`Kundenstatus`, `Bonuspunkte`, COUNT(*) AS Kundenzahl FROM `adressen` GROUP BY `Kundenstatus`, `Bonuspunkte` HAVING Kundenzahl > 1;'' \\ Das geht nicht mit ''WHERE'', da die Kundenzahl in den Gruppen erst nach der Gruppierung bekannt ist.++  
 +  - Erzeuge eine Liste mit der Zahl der Gold-Kunden mit mehr als 1000 Bonuspunkten gruppiert nach Stadt, absteigend sortiert nach der Zahl der Bonuspunkte. \\ ++ Lösung | ''SELECT `Stadt`, `Kundenstatus`, `Bonuspunkte`, COUNT(*) AS Kundenzahl FROM `adressen` WHERE `Kundenstatus` = "Gold" AND `Bonuspunkte` > 1000 GROUP BY `Stadt` ORDER BY `Bonuspunkte` DESC;'' ++ 
 +  - 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. \\ ++ Lösung | ''SELECT `Stadt`, `Kundenstatus`, `Bonuspunkte`, COUNT(*) AS Kundenzahl, SUM(`Bonuspunkte`) AS Punktesumme FROM `adressen` WHERE `Kundenstatus` != "" AND `Bonuspunkte`> 1000 GROUP BY `Stadt`, `Kundenstatus` ORDER BY Punktesumme DESC; ''++ 
  
 ==== Material ==== ==== Material ====
  • faecher/informatik/oberstufe/datenbanken/sql_gruppierungen/start.1705563667.txt.gz
  • Zuletzt geändert: 18.01.2024 08:41
  • von Frank Schiebel