MySQLでのランキングを作成するSQL
ランキングを作成する、効率の良いSQLを教えて下さい。
MySQLで、以下の状態です。
テーブル名:
hoge
カラム:
id,kbn,name,score,flg,date
id…自動
kbn…1~4
name…string
score…int
flg…bool
date…年月日
(1)dateが1週間以内のデータのみ
(2)flgがtrueのデータのみ
(3)kbn毎に、5レコード取得
(4)順位は、点数が重複している場合は同一の順位をつけSQLで生成しn位のフォーマット
(5)6レコード以降に同一スコアのデータがある場合は日付が古い順
(6)scoreは、n点のフォーマット
(7)該当データが5レコード存在しなかった場合は、順位だけをセットし他をnull
欲しい結果は、以下の状態です。
kbn,順位,name,score
1 ,1位 ,ホゲ,100点
1 ,2位 ,あい, 85点
1 ,2位 ,かき, 85点
1 ,4位 ,くけ, 70点
1 ,5位 ,さし, 65点
2 ,1位 ,すせ, 99点
2 ,1位 ,たち, 99点
2 ,3位 ,つて, 80点
・
・
・
4 ,4位 ,らり, 10点
null ,5位 ,null, null
以上、よろしくお願い致します。
補足
ありがとうございます。