Хм.. |
так ?
select v.name, v.val, rn
from
(
select name, val, count(*) c, max(count(*)) over(partition by name) cm, row_number() over (partition by name order by count(*) desc) rn
from
(
select 'a' name, 1 val from dual union all
select 'a' name, 2 val from dual union all
select 'b' name, 1 val from dual union all
select 'b' name, 2 val from dual union all
select 'b' name, 2 val from dual union all
select 'b' name, 2 val from dual
)
group by name, val
) v
where v.c = v.cm
and rn=1
|
Да, примерно это и хотелось увидеть, спасибо.
Уже и свой вариант успел сделать, идея та же:
select * from
(
select name, val, count(*) c, max(count(*)) over(partition by name) cm
, first_value(val) over(partition by name order by count(*) desc) fv
from
(
select 'a' name, 1 val from dual union all
select 'a' name, 2 val from dual union all
select 'b' name, 1 val from dual union all
select 'b' name, 2 val from dual union all
select 'b' name, 2 val from dual union all
select 'b' name, 2 val from dual
)
group by name, val
) v
where v.c = v.cm
and v.val = v.fv