Как вывести подсчёт статистики из базы данных?

Здравствуйте, подскажите как вывести подсчёт статистики., Сегодня, Вчера, За неделю, За месяц.

Мне друг ранее показывал как вывести на сегодня, а как вывести другие я не могу понять.
//За сегодня
$today = mysql_result(mysql_query("
SELECT 
count(*) 
FROM 
statistics_couter_visit 
WHERE 
date >= ".(mktime(0, 0, 0, date('m'), date('d'), date('Y')))
)
,0);

Подскажите варианты плиз.
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Несколько Count + умение обращаться с временнЫми функциями, и у вас получится универсальный запрос со статистикой:
Если scv.date типа date или datetime:
select count(case when scv.date >= CURDATE() then 1 end) today_count,
       count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) and scv.date < CURDATE() then 1 end) yesterday_count,
       count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) then 1 end) week_count,
       count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) then 1 end) month_count
from statistics_couter_visit as scv
where scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) -- тут ограничение по макс. окну просмотра статистики, то есть по month_count

Если scv.date типа timestamp (или любое другое целочисленное представление):
select count(case when scv.date >= UNIX_TIMESTAMP(CURDATE()) then 1 end) today_count,
       count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and scv.date < UNIX_TIMESTAMP(CURDATE()) then 1 end) yesterday_count,
       count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK)) then 1 end) week_count,
       count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) then 1 end) month_count
from statistics_couter_visit as scv
where scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) -- тут ограничение по макс. окну просмотра статистики, то есть по month_count

PS: Естественно, по полю scv.date должен быть создан индекс.
Ответ написан
AshBlade
@AshBlade
Просто хочу быть счастливым
Что это за статистика?

Если имеется ввиду статистика использования БД, то есть специальная схема performance_schema - пиши к ней запросы.

Но скорее всего, ты имеешь ввиду статистику своего сайта/приложения/API (в общем прикладного использования).
Это уже более сложная тема, т.к. необходимо:
- Спроектировать механизм сбора статистики - API/эндпоинты/функциии
- Спроектировать БД для ее хранения - таблицы/схемы + запросы

Также не забывай, что статистики накапливается очень много и тебе потребуются оптимизации разные. Тут тоже не очень просто:
- Для хранения статистики - разные БД (скорее всего у тебя реляционная, но для статистики лучше использовать nosql БД, например, временных рядов)
- Необходимо знать особенности этой БД, т.к. нагрузки возможно будут высокими
- Принять во внимание то, что место может просто закончиться и другие неожиданные ситуации

Просто так на твой вопрос не ответить, т.к. под каждую ситуацию свое решение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы