3

我正在构建一个报告来确定点击我网站上特定按钮的访问者数量。在分析了我的日志后,我发现访问者会在一两分钟内多次点击同一个按钮(有时最多 10 次),这完全扭曲了结果。

我正在尝试创建一个查询,该查询将在 5 分钟的时间内仅对每个访问者(按 ip)计数一次。我想出了以下内容,这给了我总数,但我似乎无法找到将其分解为时间块的正确组合。(日期时间的类型为date

SELECT count(ip), ip, link, datetime  FROM `clicks` group by ip, link

有没有一种简单的方法可以做到这一点,还是我想错了?我想如果有必要我可以按天对它进行分组,但如果可能的话,我真的很想把它分解得更细一些。

任何指向正确方向的指针将不胜感激!

4

1 回答 1

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>
于 2012-06-05T17:00:54.483 回答