Namísto aktualizace počtů za den, týden atd. stačí VLOŽIT řádek do tabulky pokaždé, když dojde k takové aktivitě:
insert into activities (activity_date, activity_info)
values (CURRENT_TIMESTAMP, 'whatever');
Nyní jsou vaše přehledy velmi jednoduché:
select count(*) from activities
where activity_date between '2008-01-01' and '2008-01-07';
nebo
select YEARWEEK(`activity_date`) as theweek, count(*)
group by theweek