Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:lsg:start [22.10.2020 09:39] – sbel | faecher:informatik:oberstufe:datenbanken:sql_gruppierungen:lsg:start [18.03.2025 08:40] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
^Funktion ^ Bedeutung ^ Wert in Gruppe '' | ^Funktion ^ Bedeutung ^ Wert in Gruppe '' | ||
- | | AVG | Durchschnittlicher Bestand in der den Preiskategorien | + | | AVG | Durchschnittlicher Bestand in der den Preiskategorien |
| COUNT | | COUNT | ||
| MAX | | MAX | ||
Zeile 20: | Zeile 20: | ||
FROM `artikel` | FROM `artikel` | ||
WHERE APreis <= 10 | WHERE APreis <= 10 | ||
+ | GROUP BY Apreis | ||
ORDER BY APreis, | ORDER BY APreis, | ||
+ | </ | ||
(ii) Gruppiert wird nach APreis und nach ABestand, in der ersten Spalte kann man sich zusätzlich mit '' | (ii) Gruppiert wird nach APreis und nach ABestand, in der ersten Spalte kann man sich zusätzlich mit '' | ||
+ | |||
<code sql> | <code sql> | ||
SELECT COUNT(*), APreis, ABestand | SELECT COUNT(*), APreis, ABestand | ||
Zeile 48: | Zeile 51: | ||
</ | </ | ||
- | Entsteht das Attribut der Filterung erst durch die Gruppierung selbst, kann erst nach der Gruppierung mit '' | + | **Allgemein: |
+ | Folgendes funktioniert also __nicht__: | ||
<code sql> | <code sql> | ||
SELECT ABestand, AVG(APreis) AS Mittelpreis | SELECT ABestand, AVG(APreis) AS Mittelpreis | ||
Zeile 57: | Zeile 61: | ||
</ | </ | ||
+ | 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 | ||
</ | </ | ||
+ | |||
+ | |||
+ | 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 | ||
+ | </ | ||
+ |