Mam bazę, która wygląda mniej więcej tak:
[nazwa] [A] [B] [nazwa niepowtarzalna]
nazwa 1 - 10 - 100 - nazwa_niepowtarzalna 1
nazwa 2 - 10 - 101 - nazwa_niepowtarzalna 2
nazwa 3 - 11 - 100 - nazwa_niepowtarzalna 1
nazwa 4 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 5 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 6 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 7 - 12 - 103 - nazwa_niepowtarzalna 4
nazwa 8 - 10 - 100 - nazwa_niepowtarzalna 1
w której grupuję wiersze by otrzymać niepowtarzalne nazwy w tabeli na stronie.
Obok tych nazw chciałbym dwie liczby - ilość wystąpień [nazwa] i ilość wystąpień B, czyli np.
Nazwa niepowtarzalna 1 - 2 - 1
Nazwa niepowtarzalna 2 - 1 - 1
Nazwa niepowtarzalna 3 - 3 - 1
Nazwa niepowtarzalna 4 - 1 - 1
Używam:
SELECT tabela.*, count(a) as nazwa, count(b ) as ile_b FROM tabela WHERE a>=10 and b>=100 GROUP BY nazwa_niepowtarzalna.
W tabeli wynikowej dostaję (chyba) poprawne wartości count(b ) natomiast count(a ) jest błędny i jest równy count(b ).
Nazwa niepowtarzalna jest przypisana ściśle do wartości A w tabeli, więc grupowanie po niej powoduje, że mam jeden wiersz z pierwszym wystąpieniem wartości A. Po grupowaniu wygląda to tak:
[nazwa] [A] [B] [nazwa niepowtarzalna]
nazwa 1 - 10 - 100 - nazwa_niepowtarzalna 1
nazwa 2 - 10 - 101 - nazwa_niepowtarzalna 2
nazwa 4 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 7 - 12 - 103 - nazwa_niepowtarzalna 4
Jak zliczyć wiersze przed ich zgrupowaniem?