【发布时间】:2010-09-20 08:30:46
【问题描述】:
在my blog 上,我在右侧导航中显示了 10 篇最受欢迎的文章(就页面点击而言)。我是这样理解的:
SELECT *
FROM entries
WHERE is_published = 1
ORDER BY hits DESC, created DESC
LIMIT 10
我想做的是显示前 10 名的页面点击量每天。我使用的是 MySQL。有没有办法在数据库中做到这一点?
顺便说一句,created 字段是一个日期时间。
更新:我想我还没有说清楚。我想要的是 1000 天前发布的具有 10,000 次点击的博客文章与 1 天前发布的具有 10 次点击的博客文章具有相同的受欢迎程度。在伪代码中:
ORDER BY hits / days since posting
...其中hits 只是一个 int,每次查看博客文章时都会递增。
好的,这就是我要使用的:
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
谢谢,斯蒂芬! (我喜欢这个网站...)
【问题讨论】: