「グループ集計で最小(最大)値を持つ行のみ取得するSQL」にて抽出されたデータでグループとして最小値が複数存在する場合もあると思います。
更に1行限定したい場合(あるのかなぁ・・・)を考えてみました。
テーブルには下記のようにデータが入力されていたとします。
Type 列をグループとして Value の値が最小値を取得する場合、該当するデータは太字のデータとなります。さらに今回は、ID 値が最小値のデータとして Type グループで1行限定したときは、背景色がグレーのデータとなります。
Type ID Name Value 1 1 AAA1 20 1 2 AAA2 10 2 1 BBB1 30 2 4 BBB4 10 2 3 BBB3 20 1 3 AAA3 10 2 2 BBB2 10
実際のSELECT文は下記のような感じです。
SELECT
T1.*
FROM Test T1
JOIN (
SELECT
A.Type, MIN(A.ID) AS ID
FROM Test A
WHERE NOT EXISTS (
SELECT *
FROM Test
WHERE Type=A.Type
AND Value< A.Value
)
GROUP BY A.Type
) T2
ON T2.Type=T1.Type
AND T2.ID=T1.ID
Value 値の最小値として取得したデータの中から更に ID 値の最小を求めキー値を取得し、全データと結合してグループ内1行を特定しました。
結合ではなく EXISTS でも良いかもしれません。
1行限定する為にどの列を使うかでSQLは変わると思いますが、参考にはなるかと思います。