過去30日間のアクセスランキング

2005年の記事に、
[E] MySQLで記事のアクセス分析
ということで、アクセスランキングを設置したのですが、データが蓄積され続けるので、ときどきリセットして運用していました。

これを過去30日間のアクセス数集計をしたいと思いました。MySQLのクエリーをネットでサンプルを調べながら、下のようなクエリーにたどり着きました。

$query = "SELECT entry_blog_id, mt_entry.entry_id entry_id, entry_title, entry_authored_on, sum(views) as total FROM mt_entry, recently_most_viewed where mt_entry.entry_id = recently_most_viewed.entry_id and entry_blog_id =".$blogid." and (DATEDIFF( NOW(), date ) <= 30) group by entry_id ORDER by total DESC LIMIT 0,$INFOMAX";

$blogidには、ブログIDが入り、複数のブログを運用している時のフィルダになります。$INFOMAXは、ランキングの数です。

「sum(views) as total」とすることで、閲覧数の集計を行ないます。「DATEDIFF( NOW(), date ) <= 30」という部分で、30日以内のデータを。「group by entry_id」とすることで、エントリー別の集計を行なうように支持しています。

リンクソース

  • 記事用リンクソース:
  • Wiki用リンクソース(PukiWiki):
  • Wiki用リンクソース(MediaWiki):
  • SNS投稿用: