Non ho capito esattamente che vuoi fare, ma molto probabile che si possa risolvere con le funzioni di raggruppamento di mysql senza scrivere valanghe di codice.
prova a postare una tabellina di esempio con qualche record e ciò che vorresti ottenere.
edit. ti faccio un esempio per calcolare i totali per ogni mese
select sum(prezzo) as totale, extract(YEAR_MONTH from campo_data) as periodo
from tabella group by extract(YEAR_MONTH from campo_data) order by periodo asc