计算按时间间隔分组的行数?

时间:2012-11-26 12:29:45

标签: mysql time intervals

目前,我的服务器上创建的工具有访问日志。这些工具不会过期,但它们都是在不同的时间创建的(很像产品)。它们具有id,各种数据字段以及创建它们时的时间戳。

我需要的是根据时间将访问日志条目分组并计入x个间隔。现在我正在修补10个步骤(间隔)。我想在这10个间隔期间计算访问条目,因此根据时间有一种使用参考。我没有使用固定的时间间隔,我的间隔是(当前时间 - 添加时间)/ 10.

这是我的输出目标:

From: 1351159089
Now: 1353932533

From           To               Entries
1351159089   - 1351436433.4  =  2
1351436433.4 - 1351713777.8  =  1
1351713777.8 - 1351991122.2  =  0
1351991122.2 - 1352268466.6  =  2
1352268466.6 - 1352545811    =  5
1352545811   - 1352823155.4  =  0
1352823155.4 - 1353100499.8  =  2
1353100499.8 - 1353377844.2  =  0
1353377844.2 - 1353655188.6  =  2
1353655188.6 - 1353932533    =  3

我现在所做的只是使用PHP和多个查询:

$from = strtotime($timeCreated);
$now = time();
$dif = $now-$from;

$steps = $dif/10;

for($i=0; $i <= 9; $i++) {
    $intervalFrom = $from+($steps*$i);
    $intervalTo = $intervalFrom+$steps;
    $get = mysql_fetch_assoc(mysql_query('SELECT count(id) as `total` FROM `access_log` WHERE `time` >= FROM_UNIXTIME('.$intervalFrom.') AND `time` < FROM_UNIXTIME('.$intervalTo.') AND `item` = "'.$itemID.'"'));
    $accessLogs[$i] = $get['total'];
}

我不会说它很慢,但在一个页面上我可能有5-10个或更多这些,然后它开始显示只有一个项目的一堆查询的缺点。

使用一两个MySQL查询来获取此输出是否有更智能且更快的方式?

由于

编辑:已经很久了,不知道是否可以这样做?

0 个答案:

没有答案