2012-04-30 9 views
60

Mam tabelę w moim mysql db, który ma dwie kolumny: grupę i podgrupę. Zobacz poniżej.Używanie grupy przez dwa pola i liczenie w SQL

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 

Próbuję uzyskać liczbę rekordów dla każdej unikalnej grupy para/podgGrupa.

To jest to, czego oczekuję:

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

Po przeczytaniu niektórych postów Próbowałem kilka zapytań SQL przy użyciu GROUP BY, count(), ale nie udało się uzyskać oczekiwany rezultat. Jak mogę to naprawić?

Odpowiedz

107

myślę szukasz: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b

+1

Witaj Corbinb. Dziękuję Ci bardzo. to działa. Zrobiłem to, co sugerujesz, ale wstawiłeś grupę przez a, b zgrupowałem według aib. Jeszcze raz dziękuję – Marc

+3

'a i b' wygląda jak instrukcja do MySQL (nie jest pewne, czy byłby to błąd składniowy, czy też zgrupowałoby się przy powrocie 0 lub 1 - zakładałbym błąd składni, szczególnie w przypadku pól varchar) . Aby zgrupować w wielu kolumnach, wystarczy użyć przecinka. – Corbin

+1

Wielkie dzięki! .. Problem ze mną był taki, że nie byłem w stanie wypowiedzieć mojego pytania i spędziłem dużo czasu na szukaniu go w końcu w celu znalezienia prostego rozwiązania z kropkami. –

6
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup 
+0

Zamiast liczby potrzebowałem wszystkich rekordów. Na przykład grpA ma do 2 podgrup: subA i subB, więc muszę pobrać cały rekord dla każdej z podgrup. Czy ktoś może mi pomóc. @ user1127214 –

5

Musisz grupa obie kolumny, grupy i podgrupy, a następnie użyj funkcji zbiorczej COUNT().

SELECT 
    group, subgroup, COUNT(*) 
FROM 
    groups 
GROUP BY 
    group, subgroup 
+0

późno, ale ta odpowiedź naprawdę mnie uratowała !!! –

+1

Wygląda na literówkę dla mnie! = GroupName – csharpwinphonexaml

+0

Zamiast liczby potrzebowałem wszystkich szczegółów rekordu. Na przykład grpA ma do 2 podgrup: subA i subB, więc muszę pobrać cały rekord dla każdej z podgrup. Czy ktoś może mi pomóc. @farzane –