我正在制作一份报告,以确定点击我网站上特定按钮的访问者数量。在分析了我的日志后,我发现访问者会在一两分钟内多次点击同一个按钮(有时多达10次),这完全会导致结果出现偏差。
我正在尝试创建一个查询,该查询将在5分钟的时间范围内仅对每个访问者(通过ip)进行一次计数。我已经提出了以下内容,它给了我总计数,但我似乎无法找到合适的组合,将其分解成大块的时间。 (datetime的类型为 date )
SELECT count(ip), ip, link, datetime FROM `clicks` group by ip, link
有没有一种简单的方法可以实现这一目标,还是我不正确地考虑这个问题?我想如果有必要,我可以在白天对它进行分组,但如果可能的话,我真的想更细致地分解它。
非常感谢任何正确方向的指针!
答案 0 :(得分:2)
如果您想要今天每5分钟间隔计算一次IP,请尝试以下方法:
SELECT COUNT(ip) ipcount,dt FROM
(
SELECT
ip,(datetime - INTERVAL MOD(UNIX_TIMESTAMP(datetime),300)) SECOND dt
FROM `clicks`
WHERE datetime >= (DATE(NOW()) + INTERVAL 0 SECOND)
) A
GROUP BY dt;
表达式DATE(NOW()) + INTERVAL 0 SECOND
今天是午夜
mysql> select DATE(NOW()) + INTERVAL 0 SECOND;
+---------------------------------+
| DATE(NOW()) + INTERVAL 0 SECOND |
+---------------------------------+
| 2012-06-05 00:00:00 |
+---------------------------------+
1 row in set (0.00 sec)
mysql>