質問 |
||
| 質問者:desmost4 | ベスト3の抽出方法 | |
|---|---|---|
困り度:
|
すごい単純な質問をしているのかもしれません。許してください。 例えば、ある学校の生徒の成績が蓄積されているテーブルがあるとします。そこからクラス毎にそれぞれ平均点がベスト3の生徒を抽出したい場合のSQLはどのようになりますでしょうか? class name average ------+------+------ A 高橋 651 A 鈴木 711 A 古田 645 A 田中 821 A 前田 630 B 永田 840 B 前川 765 B 春川 811 B 上田 699 【結果】 class name average ------+------+------ A 田中 821 A 鈴木 711 A 高橋 651 B 永田 840 B 春川 811 B 前川 765 unionでくっつけるとか試したのですがあまりスマートなSQL文ができません。 申し訳ありませんがお知恵を貸してください。 |
|
質問投稿日時:06/07/20 03:26 質問番号:2287116 |
||
回答良回答20pt |
|
| 回答者:chukenkenkou | 平均点は、静的に持つのですか? こんな感じで、目的の結果は得られると思います。 select t."class",t."name",t."average" from (select x."class",x."name",x."average",count(*) as num from oshiete_goo as x,oshiete_goo as y where x."class"=y."class" and x."average"<=y."average" group by x."class",x."average",x."name" ) as t where t.num<=3 order by t."class",t.num ; |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:自信あり |
|
| |
回答日時:06/07/20 05:33 回答番号:No.1 |
|
| この回答へのお礼 | chukenkenkouさんありがとうございます。 バッチリです! x."average"<=y."average" の部分、勉強になりました。ありがとうございました。 |