faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [20.10.2020 16:01] – [Aufgaben] sbelfaecher:informatik:oberstufe:datenbanken:sql_gruppierungen:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== SQL – Gruppierungen ====== 
  
-Datensätze, die in einer Spalte oder mehreren Spalten die gleichen Werte aufweisen, können mithilfe des GROUP BY-Zusatzes in Gruppen zusammengefasst werden. Gruppierungen machen vor allem dann Sinn, wenn innerhalb der Gruppen mit den Spaltenwerten gerechnet wird, z.B. wenn die Gesamtzahl aller Artikel einer bestimmten Preiskategorie ermittelt werden soll. 
- 
-^ Ohne Gruppierung                                                         ^ Mit Gruppierung                                                                                     ^ 
-| ''SELECT *''\\ ''FROM artikel''\\ ''ORDER BY APreis ASC''                | ''SELECT *''\\ ''FROM artikel''\\ **''GROUP by APreis''**\\ ''ORDER BY APreis ASC''                 | 
-| {{ .:auswahl_001.png }}  | {{ .:auswahl_006.png |}}                            | 
-|                                                                          | ''SELECT APreis,SUM(ABestand)''\\ ''FROM artikel''\\ ''GROUP BY APreis''\\ ''ORDER BY APreis ASC''  | 
-|                                                                          | {{ .:auswahl_005.png }}                             | 
- 
- 
- 
-Alle Artikel mit dem Preis von 1,00 Euro werden durch die Gruppierung auf einen Datensatz "projiziert" 
-Im Falle der zweiten Gruppierungsklausel wird zusätzlich der Gesamtbestand aller Artikel einer Preiskategorie mithilfe der Aggregationsfunktion ''SUM(.)'' in der Spalte ausgegeben. 
- 
-{{ .:erklaerung.png |}} 
- 
-Genau genommen ist die Verwendung der Wilcard * zur Auswahl aller Spalten in Kombination mit GROUP BY nur bedingt sinnvoll, da diejenigen Spalten, nach denen nicht gruppiert wird, unterschiedliche Werte aufweisen können. Das Beispiel in Tabelle 1 zeigt, dass in einem solchen Fall die Werte eines (beliebigen) Datensatzes der Gruppe in diesen Spalten angezeigt wird. 
-Bei restriktiverer Einstellung des Datenbanksystems müsste die Auswahl von Spalten, nach denen nicht gruppiert wird, eine Fehlermeldung liefern. 
- 
-Man kann auch gleichzeitig nach mehreren Merkmalen gruppieren, indem man einen Ausdruck der Form 
- 
-<code sql> 
-SELECT *  FROM verkaeufe GROUP BY jahr, land, produkt; 
-</code> 
- 
-verwendet. Hier werden die Verkäufe nach Jahr, Land und Produkt gruppiert (vgl. Aufgabe (3)). 
- 
- 
-===== Aufgaben ===== 
- 
-Löse die folgenden Aufgaben im SQL-Abfragefenster von phpMyAdmin auf der Datenbank webshop und speichere deine Lösungen in einer Textdatei oder deinem Info-Heft. 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) === 
- 
-Neben der Summenfunktion gibt es weitere Berechnungsfunktionen für zahlenwertige Spalten. Vervollständige die folgende Tabelle unter Verwendung folgender SQL-Abfrage: 
-<code sql> 
-  SELECT *,FUNKTION(ABestand) 
-  FROM artikel 
-  GROUP BY APreis 
-  ORDER BY APreis 
-</code> 
-Dabei ist ''FUNKTION'' nacheinander durch ''AVG'', ''COUNT'', ''MAX'', ''MIN'' und ''SUM'' zu ersetzen. 
- 
- 
-^Funktion ^ Bedeutung ^ Wert in Gruppe ''APreis=9.99'' ^ 
-| AVG       | AVG(ABestand)= | 
-| COUNT     | COUNT(ABestand)= | 
-| MAX       | MAX(ABestand)= | 
-| MIN       | MIN(ABestand)= | 
-| SUM       | SUM(ABestand)= | 
- 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A2) === 
- 
-(i) Gib den jeweiligen Gesamtbestand der Artikel in den verschiedenen Preiskategorien unter 10,00EUR an. 
- 
-(ii) Gib Gruppen mit gleichem Bestand und Preis zurück. 
- 
-(iii) Notiere ohne phpMyAdmin zu verwenden, was die folgende SQL-Abfrage ausgibt: 
-<code sql> 
-  SELECT ABestand,COUNT(*) 
-  FROM artikel 
-  GROUP BY ABestand 
-  ORDER BY ABestand 
-</code> 
-   
-(iv) Informiere dich über die ''HAVING''-Bedingung und löse  damit Teilaufgabe (2) erneut. Erläutere den Unterschied zwischen ''WHERE'' und ''HAVING''. 
- 
-(v) Gib alle Preiskategorien aus, in denen der maximal erzielbare Umsatz über 3.000,00 Euro liegt. Ist die Aufgabe auch mittels ''WHERE'' anstelle von ''HAVING'' lösbar? 
- 
- 
-([[.lsg:start|Lösungen]]) 
  • faecher/informatik/oberstufe/datenbanken/sql_gruppierungen/start.1603202478.txt.gz
  • Zuletzt geändert: 20.10.2020 16:01
  • von sbel