007:MySQLで数値の順位・ランクを求める対象言語:PHP / MySQL
|
|
| キーワード:PHP 5.0 MySQL RANK 順位 ランク 同点 同位 | |
| 理総研はユーザー間の競争原理を取り入れ、成績を様々なベクトルで評価し、ランキング形式で発表しています。MySQLのカラムのデータ(数値)を単純に昇順・降順に並べるだけでは同点の場合(同位)に対応できませんし、いったんPHPに渡して処理させると規模によっては大きな処理時間を要することになってしまいます。そこで理総研では以下のコードを利用しています。 | |
$userpoint = 87; //点数
$sql =<<<EOF
SELECT COUNT(*) + 1 as `userrank`
FROM `seiseki`
WHERE `point` > {$userpoint}
ORDER BY `point` DESC
EOF;
$result = mysql_query($sql, $link) or die(mysql_error());
$rec = mysql_fetch_assoc($result);
$userrank = $rec['userrank'];
|