I love iPhone, Android, Cocos2d-x
Posts tagged ranking
ランキングを取得するSQL
3ランキングを取得する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 以降でないと副問い合わせが使用できないので注意してください。
※本運用ではインデックスを適宜作成しています。