
MySQLで、グループごとの最高得点者一覧を取得する方法を教えてください。
例えば、「生徒番号」「学年」「組」「成績」というカラムを持ったテーブルがあるとき、各クラス (「学年」と「組」のペア) から一人ずつ、最高得点を取得した生徒の「生徒番号」と「成績」を取得しようとしています。このとき「生徒番号」は一意ですが、「成績」は一意とは限りません。
また、同じクラスで最高得点者が二人以上いる場合、すべて取得か条件を指定して一人に絞るかを選べたらなおありがたいです。
【だめだった例】
SELECT 生徒番号, 成績
GROUP BY 学年, 組
ORDER BY 成績 DESC
⇒ 「GROUP BY 成績」なので「生徒番号」を SELECT できない
SELECT 生徒番号, 成績
GROUP BY 学年, 組
HAVING MAX(成績)
⇒ 同じく
SELECT 生徒番号, 成績
WHERE 成績 IN (
SELECT MAX(成績)
FROM テーブル
GROUP BY 学年, 組
)
⇒ 「成績」は一意ではないので、余分な行 (他のクラスで成績が同じ者) が取得される
No.1ベストアンサー
- 回答日時:
同率がいた場合列記する
SELECT 生徒番号,MAIN.学年, MAIN.組,MAIN.成績
FROM 成績テーブル AS MAIN
INNER JOIN (
SELECT 学年, 組,MAX(成績) AS 成績 FROM 成績テーブル
GROUP BY 学年, 組
) AS SUB USING(学年,組,成績)
一つだけ抽出する(たとえば生徒番号が若い方)
SELECT MIN(生徒番号) AS 生徒番号,MAIN.学年, MAIN.組,MAIN.成績
FROM 成績テーブル AS MAIN
INNER JOIN (
SELECT 学年, 組,MAX(成績) AS 成績 FROM 成績テーブル
GROUP BY 学年, 組
) AS SUB USING(学年,組,成績)
GROUP BY 学年,組
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
テーブル名が可変の場合のクエ...
-
MySQLのテーブル作成でハイフン...
-
SQLです!!教えてください。
-
MySQLのセキュリティ管理について
-
MAMPで80ポートが使用されている...
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLです。こんな感じですか?あ...
-
うまくいきません教えてくださ...
-
SQLで漢字名称を都道府県や市区...
-
このSQLあってますか?教えてく...
-
第4正規形について
-
SQL CASE文に制御について
-
Access 出荷管理簿を作りたい...
-
グループごとの最高得点者一覧...
-
下記の問合せを行うクエリを、P...
-
access結合クエリを編集可能に
-
下記の問合せを行うクエリを、P...
-
select文のサマリー
-
SELECT文内での条件分岐
-
ACCESS2010 SQL 結合キーにつ...
-
accessで在庫管理
-
相関サブクエリの中で、グルー...
-
update文におけるwhereとjoinの...
-
3つの表の外部結合
-
サブクエリを使用せずにLEFT JO...
-
「テーブルに座って……」という...
おすすめ情報