2012-06-05 4 views
3

Я создаю отчет, чтобы определить количество посетителей, которые нажимают на определенные кнопки на моем сайте. Проанализировав мои журналы, я обнаружил, что посетители за одну или две минуты будут кликать по одной и той же кнопке несколько раз (иногда до 10 раз), что полностью искажает результаты.Запросов на 5 минут

Я пытаюсь создать запрос, который будет считать каждого посетителя (по ip) только один раз в течение 5-минутного таймфрейма. Я придумал следующее, которое дает мне общее количество, но я не могу найти правильную комбинацию, которая сломает ее на куски времени. (Даты и время имеет тип даты)

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

есть простой способ сделать это, или я думал об этом неправильно? Полагаю, я мог бы группировать его днем, если это необходимо, но я бы очень хотел разбить его более подробно, если это возможно.

Любые указатели в правильном направлении будут высоко оценены!

+0

Если не столбец 'Дата и время' быть типа 'DATETIME ', а не' DATE'? Можете ли вы привести пример ввода и желаемого вывода? –

ответ

2

Если вы хотите отсчеты IP-адресов за 5-минутный интервал сегодня, попробуйте следующее:

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> 
+0

Спасибо за быстрый ответ. Ваше добавление выбирает только данные за последние 5 минут, в то время как я ищу посещения всего дня, но сгруппированы и подсчитываются в 5-минутные периоды. Например, если кто-то щелкнет ссылку сейчас, а затем через 10 минут, я бы хотел, чтобы оба щелчка отображались в их собственной строке. – Jimmyb

Смежные вопросы