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

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

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

Подскажите варианты плиз.
  • Вопрос задан
  • 186 просмотров
Решения вопроса 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 БД, например, временных рядов)
- Необходимо знать особенности этой БД, т.к. нагрузки возможно будут высокими
- Принять во внимание то, что место может просто закончиться и другие неожиданные ситуации

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

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

Похожие вопросы