ランキングを取得するSQL
結構よく使いますが忘れちゃうので覚え書き
表名:rankings
カラム1:name (名前)
カラム2:point (ポイント)
☆ 全体の順位リストを取得
ORDER BYによって1位から並べて
LIMIT設定によって取得する件数を変更
例では10位までのデータを取得
SELECT r1.name, r1.point, (SELECT count(r2.point) FROM rankings as r2 WHERE r2.point > r1.point)+1 as rank FROM rankings as r1 ORDER BY r1.point DESC LIMIT 10;
☆ 対象データの順位を取得
ユーザー名 greenwich の順位を取得。
自分より値の大きなpointをカウントして+1した値が自身の順位になる。
SELECT point, (SELECT COUNT(id) FROM rankings t2 WHERE t2.point > t1.point)+1 AS ranking FROM rankings t1 WHERE name = 'greenwich';