Forum: SQL |
Thema:
Re: UNterschied zwischen group und having |
Von:
Thomas Golla (
10.01.2005 08:38) |
Hi :-)
Dies "sagte" unser Dozent (Wolf Werner Lutze) dazu:
Mit der GROUP BY Klausel können Zeilen der Ergebnistabelle in Gruppen zusammengefasst und als Gruppe über Spaltenfunktionen bearbeitet werden. Dabei werden die Zeilen derart gruppiert, dass in einer Gruppe alle Zeilen zusammengefasst werden, die in den durch die GROUP BY Klausel vereinbarten Spalten bzw. Ausdrücke (mit Ausnahme der Spaltenfunktionen) die gleichen Werte aufweisen.
Alle Spaltennamen bzw. Ausdrücke der SELECT Liste müssen in der GROUP BY Klausel stehen. Es dürfen allerdings keine Spaltenüberschriften genutzt werden. Attribute der Basistabellen, die in der SELECT Liste enthalten sind, dürfen zusätzlich mit aufgeführt werden.
Die HAVING Klausel bildet eine Auswahlbedingung für die in der GROUP BY Klausel angegebenen Gruppen. Sie ist für Gruppen das, was analog die WHERE Klausel für Zeilen ist. Es dürfen nur Spaltennamen bzw. Ausdrücke, die auch in der GROUP BY Klausel auftreten und, im Gegensatz zur WHERE Klausel, auch Spaltenfunktionen benutzt werden. Für sie sind Unterabfragen ebenfalls erlaubt.
Beispiele:
A)
Select A, avg(B)
from Tabelle
group by A
B)
Select A, B, sum(C)
from Tabelle1, Tabelle2
where Tabelle1.A = Tabelle2.A
group by A, B
having sum(C) > 100
order by B
Vielleicht hilft es dir ja.
Lieben Gruß
Tom
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!