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」とすることで、エントリー別の集計を行なうように支持しています。
コメント