Create table
CREATE TABLE `stats` (
`viewdate` date NOT NULL DEFAULT '1970-01-01',
`pageid` int(11) unsigned NOT NULL,
`views` int(11) NOT NULL DEFAULT '1',
UNIQUE KEY `date_page` (`viewdate`,`pageid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Insert some random dummy data
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
INSERT INTO stats (viewdate,pageid) VALUES (DATE_SUB(CURDATE(),INTERVAL 3*rand() DAY),5*rand()) ON DUPLICATE KEY UPDATE views = views + 1;
Get stats for page 1 last year (see interval):
SELECT viewdate, pageid, SUM(views) AS pageviews
FROM stats
WHERE viewdate > SUBDATE(CURDATE(),INTERVAL 1 YEAR)
AND pageid = 1
GROUP BY viewdate
ORDER BY viewdate DESC
Get stats for all pages last week:
SELECT viewdate, pageid, SUM(views) AS pageviews
FROM stats
WHERE viewdate > SUBDATE(CURDATE(),INTERVAL 7 DAY)
GROUP BY viewdate, pageid
ORDER BY viewdate DESC
Etc.