ランキングを取得する SQL

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

お問い合わせ

サービスに関するご相談やご質問などこちらからお問い合わせください。

03-55107260

受付時間 10:00〜17:00