ランキングを取得する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';


