
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ランキング
-
現在庫算出方法についてお教え...
-
このSQLあってますか?教えてく...
-
SQL*LoaderでCSVから指定した列...
-
SQL、2つのテーブルで条件一致...
-
外部キーだけのテーブル(主キ...
-
「テーブルに座って……」という...
-
一つ前に戻るには…
-
カラム位置変更
-
会社の飲み会の幹事になり、座...
-
SQLで違うテーブルの値を比較し...
-
SELECT 文の NULL列は?
-
2つのテーブルで引き算 postgres
-
SQL(oracle)でご助言いただきた...
-
Oracleで上書きImportはできま...
-
L2SWはARPテーブルを持っている?
-
他のデータベースとのテーブル結合
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
条件付DELEATE文について
-
sqlplusで表示が変なので、出力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLです。こんな感じですか?あ...
-
うまくいきません教えてくださ...
-
SQLで漢字名称を都道府県や市区...
-
このSQLあってますか?教えてく...
-
第4正規形について
-
SQL CASE文に制御について
-
Access 出荷管理簿を作りたい...
-
グループごとの最高得点者一覧...
-
下記の問合せを行うクエリを、P...
-
access結合クエリを編集可能に
-
下記の問合せを行うクエリを、P...
-
select文のサマリー
-
SELECT文内での条件分岐
-
ACCESS2010 SQL 結合キーにつ...
-
accessで在庫管理
-
相関サブクエリの中で、グルー...
-
update文におけるwhereとjoinの...
-
3つの表の外部結合
-
サブクエリを使用せずにLEFT JO...
-
「テーブルに座って……」という...
おすすめ情報