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

Тема в разделе "Базы данных", создана пользователем Q_BASIC, 16 дек 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Есть таблица:
    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
    Кол-во посетителей через запятую

    Так будет:
    [​IMG]
     
    Последнее редактирование: 16 дек 2014
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Если нужно получить количество уникальный айпи по каждому дню, то - на каждый день по запросу.
    Если нужно получить общее количество уникальных айпи за месяц, то код нужного запроса приведён правильный:

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

    В чем вопрос-то?
     
    Последнее редактирование: 16 дек 2014
  3. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Меня волнует то, что на каждый день запрос отдельный. 30 дней - 30 запросов. Нагрузка же какая, если каждый день все родственники и знакомые к примеру будут смотреть :D
     
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Как вариант можно создать отдельную таблицу статистики с полями "дата" и "количество уникальных айпи за эту дату". Обновлять таблицу раз в сутки.
     
    Q_BASIC нравится это.
  5. segalp

    segalp Создатель

    Регистр.:
    11 май 2013
    Сообщения:
    11
    Симпатии:
    4
    На сколько я понял требовался такой запрос:
    Код:
    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');
     
    Последнее редактирование модератором: 29 янв 2015
Статус темы:
Закрыта.