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 [20.10.2020 14:04] – 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 17: | Zeile 17: | ||
<code sql> | <code sql> | ||
- | SELECT APreis, SUM(ABestand) AS Bestandsssumme | + | SELECT APreis, SUM(ABestand) AS Bestandssumme |
FROM `artikel` | FROM `artikel` | ||
WHERE APreis <= 10 | WHERE APreis <= 10 | ||
- | ORDER BY APreis,SUM(ABestand) | + | GROUP BY Apreis |
+ | ORDER BY APreis,Bestandssumme | ||
</ | </ | ||
(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 32: | Zeile 34: | ||
(iii) Die Abfrage ermittelt die Zahl der Datensätze, | (iii) Die Abfrage ermittelt die Zahl der Datensätze, | ||
- | (v) Liegt die Filterbedingung, | + | (v) Liegt die Filterbedingung, |
<code sql> | <code sql> | ||
- | SELECT APreis, SUM(ABestand) AS Bestandsssumme | + | SELECT APreis, SUM(ABestand) AS Bestandssumme |
FROM `artikel` | FROM `artikel` | ||
WHERE APreis <= 10 | WHERE APreis <= 10 | ||
Zeile 42: | Zeile 44: | ||
<code sql> | <code sql> | ||
- | SELECT APreis, SUM( ABestand ) AS Bestandsssumme | + | SELECT APreis, SUM( ABestand ) AS Bestandssumme |
FROM `artikel` | FROM `artikel` | ||
GROUP BY APreis | GROUP BY APreis | ||
Zeile 49: | Zeile 51: | ||
</ | </ | ||
- | Enststeht | + | **Allgemein: |
+ | Folgendes funktioniert also __nicht__: | ||
<code sql> | <code sql> | ||
SELECT ABestand, AVG(APreis) AS Mittelpreis | SELECT ABestand, AVG(APreis) AS Mittelpreis | ||
Zeile 58: | Zeile 61: | ||
</ | </ | ||
+ | Das funktioniert aber: | ||
<code sql> | <code sql> | ||
SELECT ABestand, AVG(APreis) AS Mittelpreis | SELECT ABestand, AVG(APreis) AS Mittelpreis | ||
Zeile 64: | 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 | ||
+ | </ | ||
+ |