Hallo Curt
und genau das macht doch auch schon das count mit dem group by, oder etwa doch nicht?
nein
deine Abfrage:
select personalnummer, count(*) from buchungen where ndatum like '2002-01%' group by personalnummer;
gibt an, welche Personalnummer wieviele Buchungen vorgenommen hat. Du möchstest aber wissen, wieviele Personalnummern Buchungen vorgenommen haben. Dazu genügt es
select , count(distinct personalnummer) from buchungen where ndatum like '2002-01%';
anzugeben.
Noch ein Tipp: Verwende statt like lieber DATE_FORMAT. Das macht dich unabhängig von gespeicherten Datumsformaten. In deinem Beispiel könnte das z.B. so aussehen
select , count(distinct personalnummer) from buchungen where FATE_FORMAT(ndatum,'%c.%y)='1.02';
%c steht für Monatszahlen ohne führende Null und %y für zweistellige Jahreszahlen.
Trennzeichen (hier der Punkt) ist beliebig. Mehr dazu http://mysql.com/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions
Viele Grüße
Antje