I love iPhone, Android, Cocos2d-x
ランキングを取得するSQL
ランキングを取得するSQL です。
同じスコアの場合は同じ順位にするなどの必要があるため結構面倒ですが、
下記SQL でイッパツで取得できます。
実際に携帯ゲームのランキングを取得するのに使用しているSQLです。
ranking テーブル
CREATE TABLE ranking ( id bigint(20) NOT NULL auto_increment, name varchar(20) NOT NULL, score bigint(20) NOT NULL, );
SQL
SELECT r1.name, r1.score, (SELECT count(r2.score) FROM ranking as r2 WHERE r2.score>r1.score)+1 as rank FROM ranking as r1 ORDER BY r1.score DESC LIMIT 10;
rank というカラム名で順位が計算されます。
同じスコアの場合は順位は同じになります。
上記SQL はトップ10を取得していますが、実際にはLIMIT句を変更することにより
ページング処理などで下位のランキングを見れるようにしています。
副問い合わせで順位を計算しています。
MySQL ではバージョンが4.1 以降でないと副問い合わせが使用できないので注意してください。
※本運用ではインデックスを適宜作成しています。
関連する投稿
3 comments
コメントをどうぞ
Additional comments powered by BackType
[...] ランキングを取得する SQL Next » [...]
[...] ■SQLでランキング結果を取得する SELECT r1.name, r1.score, (SELECT count(r2.score) FROM ranking r2 WHERE r2.score>r1.score)+1 as rank FROM ranking r1 ORDER BY r1.score DESC ■JavaScriptでTrimする javascriptにはTrim関数が装備されていません。 ってわけで、オリジナル。 target = target.replace(/(^s+)|(s+$)/g, “”); ハピーエコタウンプロジェクト from 鯖江NPOサポート [...]
3unctuous…
…