Warum muss ich in SQL angeben, nach welchen Attributen gruppiert werden soll? Warum kann es nicht einfach alle Nicht-Aggregate verwenden?
Wenn ein Attribut nicht aggregiert ist und nicht in der GROUP BY Klausel dann nicht-deterministische Wahl wäre die einzige Option unter der Annahme, dass Tupel ungeordnet sind (mysql Art tut dies) und das ist eine riesige gotcha. Soweit ich weiß, erfordert Postgresql, dass alle Attribute, die nicht in der GROUP BY aggregiert werden, was sie als überflüssig erscheinen lässt.
- Übersehe ich etwas oder ist dies ein Fehler im Sprachdesign, der lockere Implementierungen fördert und Abfragen schwieriger zu schreiben macht?
- Wenn ich etwas übersehe, was ist eine Beispielabfrage, wo Gruppenattribute nicht abgeleitet werden können?
17 Stimmen
Wir werden Ihre Bedenken an das ANSI SQL Committee weiterleiten.
5 Stimmen
Hehe. Das ist die Sache. Es wurde von einigen sehr klugen Leuten entworfen, also muss es etwas geben, das ich nicht sehe.
0 Stimmen
Das sage ich schon seit langem.
3 Stimmen
Wie es scheint, haben bereits mehrere Tausend Menschen solche Bedenken an das ANSI-Komitee herangetragen, so dass sie die Definition von "group by" in ANSI 1999 SQL geändert haben. Dies ist in der Antwort von ypercube beschrieben. Viele Dinge, die von "wirklich klugen Leuten" und vor allem von Ausschüssen derselben entwickelt wurden, sind hoffnungslos fehlerhaft^W^W und weit vom Ideal entfernt.