社員ブログ

ランキングを取得する SQL

2010年02月12日 金曜日

ランキングを取得する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';
Trackback URL
文字サイズサイズ小サイズ中サイズ大