mysqlのSQLについてお聞きします。


studentというテーブルがあります。

クラス,名前,身長,体重
-----------------------
1組,太郎,180,72
1組,次郎,180,71
1組,サブ,170,80
2組,かおる,181,73
2組,はじめ,181,72
2組,みなみ,171,81

各クラスの一番大きな生徒を抽出したいと考えています。
大きなの定義は、「身長が高い。身長が同じの場合には、身長に加え体重が重い生徒。」です。

上記の例の場合は、下記の2行となります。
1組,太郎,180,72
2組,かおる,181,73

よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/11/03 17:20:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント60pt

方法は1つではありませんが、身長と体重を1つに結合することによって判別式を簡単にした例を作ってみました

体重が999kgを超える場合は千倍ではなく万倍してください

身長を小数点以下まで数えている場合も適宜倍数を変えてください

SELECT a.*
FROM student a
WHERE NOT EXISTS(SELECT * FROM student b WHERE (b.クラス = a.クラス) AND (b.身長 * 1000 + b.体重 > a.身長 * 1000 + a.体重))
ORDER BY a.クラス;

http://dev.mysql.com/doc/refman/5.1-olh/ja/exists-and-not-exists...

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません