私はこのようなテーブルを持っていますT
:
ID | brand
2 | 100
2 | 300
2 | 300
1 | 100
1 | 200
ID の 50% を超える ID とブランドの組み合わせを見つけたいです。例:ここでは、結果は次のようになります
ID | brand
2 | 300
(2,300) は ID 2 で 3 回中 2 回発生します。ID1 では、両方の組み合わせが 50% 回であるため、ID 1 の行はありません。
今、私は次のようにアプローチしました:
まず、各 ID、ブランドの組み合わせの数を見つけました:
(select id,brand,count(*) c from T group by id,brand) as F
次に、上記の基準を満たすすべての ID をリストします
select ID from F group by ID having max(c)/count(*) > 0.5
それは完全に機能しますが、問題は、上記のクエリで次のように指定したため、対応するブランドを取得できないことです
select ID, brand ...
次に、常にテーブルの最初のブランドを提供します。
これがSQLフィドルです