faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:lsg: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:lsg:start [22.10.2020 09:39] sbelfaecher:informatik:oberstufe:datenbanken:sql_gruppierungen:lsg:start [18.03.2025 08:40] (aktuell) Frank Schiebel
Zeile 4: Zeile 4:
  
 ^Funktion ^ Bedeutung ^ Wert in Gruppe ''APreis=9.99'' ^ ^Funktion ^ Bedeutung ^ Wert in Gruppe ''APreis=9.99'' ^
-| AVG     | Durchschnittlicher Bestand in der den Preiskategorien   | AVG(ABestand)=87 |+| AVG     | Durchschnittlicher Bestand in der den Preiskategorien   | AVG(ABestand)=80 |
 | COUNT     | COUNT(ABestand)= | | COUNT     | COUNT(ABestand)= |
 | MAX       | MAX(ABestand)= | | MAX       | MAX(ABestand)= |
Zeile 20: Zeile 20:
 FROM `artikel`  FROM `artikel` 
 WHERE APreis <= 10 WHERE APreis <= 10
 +GROUP BY Apreis
 ORDER BY APreis,Bestandssumme  ORDER BY APreis,Bestandssumme 
 +</code>
  
 (ii) Gruppiert wird nach APreis und nach ABestand, in der ersten Spalte kann man sich zusätzlich mit ''COUNT(*)'' noch ausgeben lassen, wieviele Datensätze in dieser Gruppe zusammengefasst werden. (ii) Gruppiert wird nach APreis und nach ABestand, in der ersten Spalte kann man sich zusätzlich mit ''COUNT(*)'' noch ausgeben lassen, wieviele Datensätze in dieser Gruppe zusammengefasst werden.
 +
 <code sql> <code sql>
 SELECT COUNT(*), APreis, ABestand SELECT COUNT(*), APreis, ABestand
Zeile 48: Zeile 51:
 </code> </code>
  
-Entsteht das Attribut der Filterung erst durch die Gruppierung selbst, kann erst nach der Gruppierung mit ''HAVING'' gefiltert werden:+**Allgemein:** Entsteht das Attribut der Filterung erst durch die Gruppierung selbst, kann erst nach der Gruppierung mit ''HAVING'' gefiltert werden:
  
 +Folgendes funktioniert also __nicht__:
 <code sql> <code sql>
 SELECT ABestand, AVG(APreis) AS Mittelpreis SELECT ABestand, AVG(APreis) AS Mittelpreis
Zeile 57: Zeile 61:
 </code> </code>
  
 +Das funktioniert aber:
 <code sql> <code sql>
 SELECT ABestand, AVG(APreis) AS Mittelpreis SELECT ABestand, AVG(APreis) AS Mittelpreis
Zeile 63: Zeile 68:
 HAVING Mittelpreis < 10 HAVING Mittelpreis < 10
 </code> </code>
 +
 +
 +Die Aufgabe (v) lässt sich also nicht mit WHERE lösen, da man dabei immer nur für eine Zeile das Produkt aus Bestand und Preis betrachten kann - man möchte aber für eine ganze Kategorie die Bestanddsumme * Artikelpreis anschauen und danach auch Filtern:
 +
 +<code sql>
 +SELECT APreis, SUM(`ABestand`)*APreis AS Umsatz 
 +FROM artikel 
 +GROUP BY APreis 
 +HAVING Umsatz >= 3000
 +</code>
 +
  • faecher/informatik/oberstufe/datenbanken/sql_gruppierungen/lsg/start.1603359579.txt.gz
  • Zuletzt geändert: 22.10.2020 09:39
  • von sbel