Подсчет значений за каждый день

Статус
В этой теме нельзя размещать новые ответы.

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Есть таблица:
ip | d | m | time
95.29.29.2 3 1 1418750946
95.11.10.2 3 1 1418750492
95.29.29.2 3 1 1418750491
10.29.29.1 4 1 1418750401
10.00.29.1 4 1 1418750401
10.29.20.1 4 1 1418750503
10.00.29.9 4 1 1418750910

Надо получить количество уникальных IP за каждый из 30 последних дней. (Диаграмму составляю)

За 3.1 - 2 уникальных
За 4.1 - 3 уникальных
И так далее

К примеру так за 1 день:
Код:
SELECT COUNT(DISTINCT `ip`) FROM (`counter`) WHERE `time`>'.($time-2592000).'
Но не делать же мне 30 таких запросов

Надо такое сделать:
В одной переменной, скажем $users, должен быть такой текст (string:(
1, 4, 2, 5, 10, 40, 20, 30, 4, 2, 5, 10, 40, 20, 30, 1, 4, 2, 5, 10, 40, 20, 30, 4, 2, 5, 10, 40, 20, 30
Кол-во посетителей через запятую

Так будет:
c49b10a2ef8c.png
 
Последнее редактирование:
Если нужно получить количество уникальный айпи по каждому дню, то - на каждый день по запросу.
Если нужно получить общее количество уникальных айпи за месяц, то код нужного запроса приведён правильный:

SELECT COUNT(DISTINCT `ip`) FROM (`counter`) WHERE `time`>'.($time-2592000).'

В чем вопрос-то?
 
Последнее редактирование:
Если нужно получить количество уникальный айпи по каждому дню, то - на каждый день по запросу.
Если нужно получить общее количество уникальных айпи за месяц, то код нужно запроса приведён правильный:

SELECT COUNT(DISTINCT `ip`) FROM (`counter`) WHERE `time`>'.($time-2592000).'

В чем вопрос-то?
Меня волнует то, что на каждый день запрос отдельный. 30 дней - 30 запросов. Нагрузка же какая, если каждый день все родственники и знакомые к примеру будут смотреть :D
 
Меня волнует то, что на каждый день запрос отдельный. 30 дней - 30 запросов. Нагрузка же какая, если каждый день все родственники и знакомые к примеру будут смотреть :D

Как вариант можно создать отдельную таблицу статистики с полями "дата" и "количество уникальных айпи за эту дату". Обновлять таблицу раз в сутки.
 
На сколько я понял требовался такой запрос:
Код:
SELECT DATE_FORMAT(FROM_UNIXTIME(time),'%Y-%m-%d') as date, COUNT(DISTINCT ip) as count
FROM counter
WHERE FROM_UNIXTIME(time) BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
GROUP BY DATE_FORMAT(FROM_UNIXTIME(time),'%Y-%m-%d');
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху