フィルター結合を使用し(A,B)
て、行数が最大の組み合わせを一覧表示できます。
select src.*
from (
select A
, B
, count(*) cnt
from YourTable
group by
A
, B
) src
join (
select A
, max(cnt) as maxcnt
from (
select A
, B
, count(*) cnt
from YourTable
group by
A
, B
) comb
group by
A
) maxab
on maxab.A = src.A
and maxab.maxcnt = src.cnt
SQL Fiddle の例。
データベースがウィンドウ関数をサポートしている場合は、次dense_rank()
のように使用できます。
select *
from (
select dense_rank() over (
partition by A
order by cnt desc) as rn
, *
from (
select A
, B
, count(*) cnt
from YourTable
group by
A
, B
) t1
) t2
where rn = 1
SQL Fiddle のウィンドウ関数の例。 ウィンドウ機能は、最近のバージョンの SQL Server、Oracle、PostgeSQL で利用できます。