Warum fügt Count() in SQL alle anderen Datensätze im Select zu einem Datensatz zusammen?
Ich hätte erwartet das jedem Datensatz die Anzahl zugewiesen wird. Jedoch werden alle Datensätze zu einem Zusammengefasst. Wie kann das sein, wie kann ein Datensatz in einem Select alle anderen Datensätze zu einer gruppierung zwingen? Mir ist auch aufgefallen, dass man mit einem Group By diesen einen resultierenden Datensatz wieder in mehrere auslegen kann. Logisch ist das nicht nachvollziehbar
2 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
COUNT() ist eine sogennante Aggregatfunktion - wie auch z.B. SUM().
Das bedeutet, dass sie alle vom SELECT erfassten Datensätze zu einem Datensatz zusammenfasst - oder eben zu mehreren, wenn du GROUP BY verwendest, um anzugeben, wonach du denn gruppieren möchtest.
Das ist durchaus logisch nachvollziehbar - und auch recht nützlich.
Es hilft übrigens ungemein, das in der Dokumentation der Datenbank nachzulesen.
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Count gibt an, wie oft die Spalten der Ergebniszeile in der Kombination derer Werte in der Tabelle vorkommen.
Wenn du keine weiteren, gruppierten Spalten selektierst, gibt Count die Gesamtzahl aller Tupel der Tabelle wieder.
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Beispiel: Du slektierst NAME, COUNT(*)
Ein Ergebnis könnte so aussehen
Tim 2
Tom 3
Fred 1
Selektierst du nur COUNT steht dort
6