Webアプリケーション情報のスクラップ集
お知らせ
2008-10-20
新着記事
PHP関連
symfony1.2でaskeet(サンプルのQ&Aサイト)を再構築する
DB関連
アプリケーションサンプル
CodeIgniterで作成した簡易プロジェクト管理システム
Links
MySQLでのランキング計算
何かのログテーブルを元に集計を行い結果をランキング用テーブルに格納したいといった場合は、
ユーザー変数を使うことで一回のINSERT文で結果を生成することができます。
変数の初期化
set @a=0;
ユーザー変数はSQLの実行前に初期化しておきます。
SQLの実行
ログテーブル(access_log)のデータ作成日(created)が2008年10月のアクセス数(access)が多い順に集計した
結果をランキングテーブル(ranking)に格納。
ユーザー変数@aにより疑似的にrankというカラムを生成し結果テーブルに格納する。
set @a=0;
INSERT INTO ranking(page_id, access, rank)
SELECT page_id, access, @a=@a+1 as rank FROM(
SELECT page_id, count(*) as access FROM access_log
WHERE created > '2008-10-01' AND created < '2008-11-01'
GROUP BY page_id
) as sum_access_log ORDER BY access DESC;
投稿日:2008/10/15
