Verwenden Sie group by für zwei Felder und zählen Sie in SQL

83

Ich habe eine Tabelle in meiner MySQL-Datenbank, die zwei Spalten enthält: Gruppe und Untergruppe. Siehe unten.

 group, subGroup
 grp-A, sub-A
 grp-A, sub-A
 grp-A, sub-B      
 grp-B, sub-A
 grp-B, sub-B
 grp-B, sub-B

Ich versuche, die Anzahl der Datensätze für jede einzelne Paargruppe / Untergruppe zu ermitteln.

Das erwarte ich:

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2

Nachdem ich einige Beiträge gelesen hatte, versuchte ich mehrere SQL-Abfragen mit group by, count (), aber es gelang mir nicht, das erwartete Ergebnis zu erzielen. Wie kann ich das beheben?

Marc
quelle
1
Ich wollte einen anderen Fall, Anzahl der Zuckergruppen für jede Gruppe, also ist dies die Abfrage SELECT a, b, COUNT (verschieden b) FROM tbl GROUP BY a
luky

Antworten:

139

Ich denke du suchst: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b

Corbin
quelle
1
Hallo Corbinb. Vielen Dank. es funktioniert. Ich habe getan, was Sie vorschlagen, aber von a, b Gruppe gesetzt. Ich habe von a und b gruppiert.
Marc
3
a and bsieht aus wie eine Anweisung an MySQL (nicht wirklich sicher, ob es sich um einen Syntaxfehler handelt oder ob es sich um eine Rückgabe von 0 oder 1 handelt - ich würde einen Syntaxfehler annehmen, insbesondere für varchar-Felder). Um mehrere Spalten zu gruppieren, verwenden Sie einfach ein Komma.
Corbin
1
Danke vielmals!! Das Problem bei mir war, dass ich meine Frage nicht formulieren konnte und viel Zeit damit verbrachte, zu googeln, um schließlich hier für eine einfache und punktuelle Lösung zu landen.
Faheem Farhan
Anstelle der Zählung benötigte ich die gesamten Datensatzdetails. Zum Beispiel hat grpA zwei Untergruppen: subA und subB, daher muss ich den gesamten Datensatz für jede der Untergruppen abrufen. Kann mir bitte jemand helfen. @Corbin
admin 7798
2
Ich wollte die Anzahl der Zuckergruppen für jede Gruppe, also ist dies die Abfrage SELECT a, b, COUNT (verschieden b) FROM tbl GROUP BY a
luky
8
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup
user1127214
quelle
Anstelle der Zählung benötigte ich die gesamten Datensatzdetails. Zum Beispiel hat grpA zwei Untergruppen: subA und subB, daher muss ich den gesamten Datensatz für jede der Untergruppen abrufen. Kann mir bitte jemand helfen. @ user1127214
admin 7798
7

Sie müssen beide Spalten, Gruppe und Untergruppe, gruppieren und dann die Aggregatfunktion verwenden COUNT().

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup
Farzane
quelle
1
Scheint mir ein Tippfehler Gruppe! = Gruppenname
csharpwinphonexaml
Anstelle der Zählung benötigte ich die gesamten Datensatzdetails. Zum Beispiel hat grpA zwei Untergruppen: subA und subB, daher muss ich den gesamten Datensatz für jede der Untergruppen abrufen. Kann mir bitte jemand helfen. @farzane
admin 7798