Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.546 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [Anfägerfrage] wofür ist Group By gut?

  Alt 5. Aug 2009, 15:22
Aggregatfunktionen wie COUNT, MIN, MAX, AVG beziehen sich ja nicht auf einzelne Datensätze, sondern auf eine Gruppe von Datensätzen. Deshalb ist es notwendig, nach allen Feldern zu gruppieren, die nicht Aggregatfelder sind. Je mehr dieser Felder Du abfragst, desto feiner die Gruppierung.

[edit] Ein Beispiel: gegeben sei folgende Tabelle
Code:
Name   | Vorname
=================
Meier  | Hans
Müller | Klaus
Schmidt | Dieter
Meier  | Franz
Müller | Emil
Um festzustellen, welcher Nachname wie oft vorkommt, lautet die Abfrage
SQL-Code:
SELECT Name, COUNT(*)
FROM Tabelle
GROUP BY Name
Dabei sollte herauskommen:
Meier 2
Müller 2
Schmidt 1

Um das Ganze auf die Kombination von Nach- und Vornamen auszuweiten, muss es also lauten
SQL-Code:
SELECT Name, Vorname, COUNT(*)
FROM Tabelle
GROUP BY Name, Vorname
Ließe man den Vornamen aus der Gruppierung heraus, wie soll das Abfrageergebnis dann aussehen? Soll der Vorname wegfallen oder mehrfach gelistet werden oder was sonst? Das DBMS kann das ja nicht alleine entscheiden, daher wäre eine solche Abfrage ungültig (in bestimmten DBMS ist dem AFAIK nicht so, aber das entspricht nicht dem SQL-Standard)[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat