中学受験専門 理科総合研究所 −理総研−

フロントページへ
Name:
Pass:
RSS
: ユーザー登録はコチラ :
左 理総研:技術情報と開発メモ 右

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'];
  • いったんseisekiテーブル内のpointカラムを降順でならべ(6〜8行目)、自分より大きい点数である人間の数をカウントして+1(5行目)。同点がいても同じ順位で発表されます。
著者 You Mizuguchi
© 2011 System-iDO IT Devisers