В моем блоге , в правой панели я отображаю 10 самых популярных статей с точки зрения посещений страниц. Вот как я это понимаю:
SELECT *
FROM entries
WHERE is_published = 1
ORDER BY hits DESC, created DESC
LIMIT 10
Я хотел бы показать топ-10 по количеству просмотров страниц в день. Я использую MySQL. Есть ли способ сделать это в базе данных?
Кстати, поле created
- это дата и время.
ОБНОВЛЕНИЕ: Я думаю, что я не прояснил себя. Я хочу, чтобы запись блога с 10 000 посещений, которая была опубликована 1000 дней назад, имела такую же популярность, как запись в блоге с 10 посещениями, которая была размещена 1 день назад. В псевдокоде:
ORDER BY hits / days since posting
... где hits
- это просто целое число, которое увеличивается каждый раз при просмотре сообщения в блоге.
Хорошо, вот что я собираюсь использовать:
SELECT *, AVG(
hits / DATEDIFF(NOW(), created)
) AS avg_hits
FROM entries
WHERE is_published = 1
GROUP BY id
ORDER BY avg_hits DESC, hits DESC, created DESC
LIMIT 10
Спасибо, Стивен! (Мне нравится этот сайт ...)