- ベストアンサー
グループ毎の最大値を持つデータのみ抽出したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問通りにSQL作るとこんな感じ SELECT MIN(t.個別ID) 個別ID, t.グループID, t.順位, t.個数 FROM table_1 t INNER JOIN (SELECT a.グループID, MAX(a.個数) 個数 FROM dbo.Table_1 a GROUP BY a.グループID) ex on ex.グループID=t.グループID AND ex.個数 = t.個数 GROUP BY t.グループID, t.順位, t.個数
その他の回答 (2)
- bin-chan
- ベストアンサー率33% (1403/4213)
テストしたら修正がありました。 例示のデータからご所望の結果が得られることを確認しました。 1)グループごとの個数最大値を求める(t1) 2)グループごとの個数最大値と同じ個数を持つ個別IDの最小値を求める(t2) 3)求めた最小値で列をSelect(t3) select t3.* from table1 as t3, ( select table1.グループID, min(table1.個別ID) as 最小個別ID from table1, ( select グループID, max(個数) as 最大個数 from table1 group by グループID ) as t1 where table1.グループID = t1.グループID and table1.個数 = t1.最大個数 group by table1.グループID ) as t2 where t3.個別ID = t2.最小個別ID
- bin-chan
- ベストアンサー率33% (1403/4213)
テストしてませんが。 こんな感じ? 1)グループごとの個数最大値を求める 2)グループごとの個数最大値と同じ個数を持つ個別IDの最小値を求める 3)求めた最小値の列をSelect select t3.* from table1 as t3, ( select min(t2.個別ID) as 最小個別ID from table1, ( select グループID, max(個数) as 最大個数 from table1 group by グループID ) as t1 where t2.グループID = t1.グループID and t2.個数 = t1.最大個数 ) as t2 where t3.個別ID = t2.最小個別ID