Я думаю, вы хотите, чтобы две агрегации были выстроены по имени. Если это так, это не встроенная способность в SQL, но вы можете сконструировать запрос, чтобы сделать то, что вы хотите:
select name, max(shape) as shape, max(shape_cnt),
max(size) as size, max(size_cnt)
from ((select name, shape, 0 as size_cnt, count(*) as shape_cnt,
row_number() over (order by count(*) desc) as seqnum
from t
group by name, shape
) union all
(select name, size, 0, count(*),
row_number() over (order by count(*) desc) as seqnum
from t
group by name, size
)
) nss
group by name, seqnum;