アプリ版:「スタンプのみでお礼する」機能のリリースについて

添付画像のようなデータがあって、赤字のところだけ出力したいと
思っています。
グループIDごとに、一番個数が大きいもの(同じ個数の場合、個別IDが
若いもの)を出したいのです。
(順位はグループごとにふられているので、グループごと同じです)

個数が同じデータがあるもので、単純にMAXのものを…とするのも
難しそうで困っています。
ご教授いただけないでしょうか。

「グループ毎の最大値を持つデータのみ抽出し」の質問画像

A 回答 (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.個数
    • good
    • 3

テストしたら修正がありました。


例示のデータからご所望の結果が得られることを確認しました。

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
    • good
    • 1

テストしてませんが。



こんな感じ?
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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A