Anstatt die Anzahl pro Tag, Woche usw. zu aktualisieren, fügen Sie einfach jedes Mal eine Zeile in eine Tabelle ein, wenn eine Aktivität wie folgt stattfindet:
insert into activities (activity_date, activity_info)
values (CURRENT_TIMESTAMP, 'whatever');
Jetzt sind Ihre Berichte sehr einfach wie:
select count(*) from activities
where activity_date between '2008-01-01' and '2008-01-07';
oder
select YEARWEEK(`activity_date`) as theweek, count(*)
group by theweek