Salve,
solitamente si usa l'istruzione gruop by in sql per conteggiare la ripetizione din determinati dati in una tabella
es:
SELECT Tabella.Citta, Count(Tabella.Data) AS ConteggioDiData
FROM Tabella
GROUP by Tabella.Citta
HAVING Tabella.Citta='milano'***
*** fa la stessa funzione del Where nelle query di selezione "comuni" --- ho selezionato il nome di città come esempio, probabilmente non ti servirà
Se le date sono salvate proprio con un campo dati "Data" per raggrupparle per giorno potrebbe essere utlile formattare i dati prima di raggrupparli con
esempio: STR_TO_DATE(datestring, '%d/%m/%Y') o DATE_FORMAT(date,'%d/%m/%Y')
Per i cliclo di stampa dei valori, non sapendo come sia il layout non so come aiutarti.