3

サイトの特定のボタンをクリックした訪問者数を特定するレポートを作成しています。ログを分析したところ、訪問者は 1 ~ 2 分以内に同じボタンを複数回 (場合によっては最大 10 回) クリックするため、結果が完全に歪んでしまうことがわかりました。

各訪問者を (IP ごとに) 5 分間に 1 回だけカウントするクエリを作成しようとしています。私は以下を思いつきました。これにより合計カウントが得られますが、それを時間の塊に分割する適切な組み合わせを見つけることができないようです。(datetime は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 に答える