Webアプリケーション情報のスクラップ集

お知らせ

Blogサイトを公開しました

2008-10-20

新着記事

PHP関連

symfony1.2でaskeet(サンプルのQ&Aサイト)を再構築する

DB関連

MySQLでのランキング計算

アプリケーションサンプル

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

コメント

▲ページの先頭へ