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:01] – 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 13: | Zeile 13: | ||
**(2)** | **(2)** | ||
+ | |||
+ | (i) | ||
+ | |||
<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 | ||
</ | </ | ||
- | (3) 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 27: | Zeile 32: | ||
</ | </ | ||
- | (4) Die Abfrage ermittelt die Zahl der Datensätze, | + | (iii) Die Abfrage ermittelt die Zahl der Datensätze, |
- | (6) 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 39: | 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 46: | 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 55: | Zeile 61: | ||
</ | </ | ||
+ | Das funktioniert aber: | ||
<code sql> | <code sql> | ||
SELECT ABestand, AVG(APreis) AS Mittelpreis | SELECT ABestand, AVG(APreis) AS Mittelpreis | ||
Zeile 61: | 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 | ||
+ | </ | ||
+ |