How to design DB for statistics service?
I'd recommend you to make a separate table for each attribute. Like so

table impressions
-channel_id
-date timestamp
-other attributes like ad_id

table clicks
-channel_id
-date timestamp
-ad_id


For every event you just make an insert, to show stats it is also very efficient - it is just index scan with count or aggregate function. 
Also this approach scales well - you can easily shard such tables. Or replace it with nosql solution. For such a task i'd recommend HBase - this datamodel naturally translates in HBase schema, and HBase is very good at range scans.

UPD: I see you updated qustion, so i need to clarify. 
Basic tables which still usefull to store Facts. Over them you can immediately make graphs and reports. If you concern about performance, people usually preaggregate data. So if your people need 5/10/30 minutes resolution, you aggregate into 5/10/30_minute_table for fast reporting.

This batch processing of old data takes time. If it doesn't fit your SLA, modern guys take CEP engines like twitter Storm to analyze and aggregate this table in real time. Or you can just buffer events for a minute, aggregate them and then store. I don't know how RoR fits this role and i don't know your requirements. But i think thats another story.