在SQL中的"group by"表达式:如何获取组中最常出现的字符串?

mr_*_*org 1 sql oracle group-by oracle10g

假设我们有下表:

Id   A    B
1    10   ABC
2    10   ABC
3    10   FFF
4    20   HHH
Run Code Online (Sandbox Code Playgroud)

作为"group by A"表达式的结果,我希望得到最常出现的B-Column的值:

select A, mostoften(B) from table group by A;

A    mostoften(B)
10   ABC
20   HHH
Run Code Online (Sandbox Code Playgroud)

我如何在Oracle 10g中实现这一目标?

备注:在平局的情况下(当最常出现多个值时),选择哪个值无关紧要.

Rem*_*anu 5

select A, B
from (
  select A, B, ROW_NUMBER() OVER (PARTITION BY A ORDER BY C_B DESC) as rn
  from (
     select A, COUNT (B) as C_B, B
     from table
     group by A, B
  ) count_table
) order_table
where rn = 1;
Run Code Online (Sandbox Code Playgroud)

你希望Bs的最大COUNT组由A,B组成.