SQLで順位を付ける方法

Pocket

次のようなテーブル「member」があったとします。

id name height
1 Ochiai 179
2 Tanaka 172
3 Sato 177
4 Suzuki 176
5 Inoue 175
6 Ueno 179
7 Endo 178
8 Ito 180
9 Yamamoto 175
10 Aoki 170

これに身長(height)の高い順に順位を付けます。Access2007で確認しました。

SQLは次の通りです。

SELECT (
    SELECT Count(member.id)
    FROM member
    WHERE member.height > member1.height
    ) + 1 AS rank, member.name, member.height
FROM member , member AS member1
WHERE member.id = member1.id
ORDER BY member.height DESC;

「member AS member1」として同じテーブル「member1」を作ります。
「SELECT Count(member.id) FROM member WHERE member.height > member1.height」として、自分より身長の高い者の数を数えています。これに1を加えることで順位になります。自分より身長の高い者がいない場合は0で、これに1を加えて「1」、一人いる場合は1で、これに1を加えて「2」となります。

結果は次の通りです。

rank name height
1 Ito 180
2 Ueno 179
2 Ochiai 179
4 Endo 178
5 Sato 177
6 Suzuki 176
7 Yamamoto 175
7 Inoue 175
9 Tanaka 172
10 Aoki 170

同じ身長の場合、同じ順位になっています。

[ 2012年7月28日 | カテゴリー: Access | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報