Accessには、ExcelのRANK関数のように直接的に順位を求める関数がありませんが、DCount関数を利用することで順位を求めることができます。
例として右のようなテーブルを用い、「点数」列の値が大きい順に順位をつけてみます。
クエリで求めてみましょう。
次のような列を設けます。
順位: DCount("*","成績テーブル","点数 >" & [点数])+1
要は、当該レコードの点数より点数が高いレコードの数を数え、それに1を足すというわけです。これで順位が求まります。
データシートビューです。
当たり前ですが同点で同順位になっていることも確認できます。
DCount関数の仕様に基づき、さまざまな条件を課すこともできます。
次の例として、「所属」列の値によりレコードを区別し、それぞれの値ごとに順位をつけます。
つまり、山田小学校と鈴木小学校のそれぞれの生徒ごとに1番から順位をつけます。
所属別順位: DCount("*","成績テーブル","所属 = '" & [所属] & "' AND 点数 >" & [点数])+1
当該レコードと「所属」の値が同じで、かつ点数が高いレコードの数を数え、それに1を足しているというわけです。
なお、2つあるシングルクオーテーション(')の存在に注意してください。これがないとテキスト型である「所属」の値の比較がうまくできません。
データシートビューです。
所属と順位でソートした方が見やすかったですね;-o-)
なお、「空き」のない順位については次の記事を参照願います。