我正在尝试用 PHP 编写一些代码,这将允许我在上周、一个月、一年等期间获得我网站上的前 10 个页面。现在,每天的页面浏览量存储在一个表中。每行包含页面 ID、当天 0:00 的 unix 时间戳和当天的综合浏览量。
因此,为了完成我想要的,我需要选择此表中的所有行(对于我给定的时间范围),然后将具有相同页面 ID 的每一行的页面浏览量相加,然后将其从高到低排序。我想不出一种不会因大量循环而疯狂复杂的方法。有人对我有什么想法吗?
谢谢!
最简单的方法可能是简单地为您想要的每个时间段进行查询
SELECT page_id, SUM(pageviews)
FROM table
WHERE
time BETWEEN yourstarttime AND NOW();
GROUP BY page_id
ORDER BY SUM(pageviews);
yourstarttime
因为,比如说,最后一年将DATE_SUB(NOW(), INTERVAL 1 YEAR)
获得最后一年的所有计数。
您可以使用 MySQL 日期函数来提取您关心的日期部分,并按此分组。
例如,如果您按周处理它,您可以使用 week() 函数http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week将将时间戳记为一周,然后您每周的点击次数将被分组,您可以按降序排序以找到前 10 名。
看看DATE_SUB
SELECT *
FROM `yourTable`
WHERE `some_time` < DATE_SUB(NOW(), INTERVAL 2 WEEK);
(您需要“2 周”)。