SQL Gruppierungen- was ist das?

blender

Neues Mitglied
Moin!
Ihr kennt doch sicherlich GROUP BY....
Nun habe ich bis heute noch nicht richtig verstanden, was das überhaupt ist....
kann mir da jemand weiterhelfen und es wirklich verständlich (mit Beispielen wäre es optimal) erklären? Wäre sehr sehr dankbar,
ich danke euch:)
 

Maliko

Bekanntes Mitglied
GROUP BY sorgt in erster Linie dafür, dass wenn nach den entsprechenden Kriterien mehrere Datensätze den selben Inhalt haben wird nur noch ein Datensatz angezeigt.

Beispiel

idfarbezahlbaum
1rot1eiche
2grün2eiche
3grün1eiche

Machst du jetzt nur einen Select auf den Baum, würdest du dreimal den selben Wert zurückerhalten. Machst du aber ein GroupBy auf den Baum, wird dir die Eiche nur einmal angezeigt.
 
K

kneitzel

Gast
GROUP BY sorgt in erster Linie dafür, dass wenn nach den entsprechenden Kriterien mehrere Datensätze den selben Inhalt haben wird nur noch ein Datensatz angezeigt.

Beispiel

idfarbezahlbaum
1rot1eiche
2grün2eiche
3grün1eiche

Machst du jetzt nur einen Select auf den Baum, würdest du dreimal den selben Wert zurückerhalten. Machst du aber ein GroupBy auf den Baum, wird dir die Eiche nur einmal angezeigt.

Also das alleine würde ich so nicht stehen lassen, denn da gäbe es ja auch noch das SELECT DISTINCT, welches genau sowas macht.

Bei der Gruppierung ist der wichtige Unterschied, dass nicht angegebene Felder mit einer Methode zusammen gefasst werden können. Also sowas wie COUNT, SUM, ...:
SELECT baum, SUM(zahl) as baumAnzahl, COUNT(zahl) anzahlEintraege FROM sometable GROUP BY baum;
 

Dompteur

Top Contributor
Ein häufiger Anwendungsfall für GROUP BY ist die Kombination von Selection und statistischer Auswertung.

Mit den Daten aus dem obigen Beispiel könntest du ein paar Auswertungen gruppiert nach "farbe" machen:

SQL:
SELECT farbe,
     , COUNT(zahl)  -- zählt die Anzahl der Sätze mit gleicher Farbe
     , MAX(zahl)    -- Maximalwert der Spalte "zahl" für alle Sätze der gleichen Farbe
     , MIN(zahl)    -- Minimalwert der Spalte "zahl" für alle Sätze der gleichen Farbe
     , SUM(zahl)    -- Summe der Werte aus "zahl" für alle Sätze der gleichen Farbe
     , AVG(zahl)    -- Durchschnittswert der Werte aus "zahl" für alle Sätze der gleichen Farbe
FROM tabelle
GROUP BY farbe

Das Ergebnis sieht dann so aus:

farbecountmaxminsumavg
rot11111
grün22131.5


Also für "grün" gilt es beispielsweise
  • 2 Sätze
  • dabei ist der höchste Wert für zahl gleich 2
  • der niedrigste Wert für zahl ist 1
  • die Summe aller zahl-Werte für "grün" ist 3
  • der Durchschnitt aller zahl-Werte für "grün" Werte ist 1.5
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Relationale Algebra Gruppierungen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben