我有T桌:
ID Type
---- ----
1 a
1 b
2 a
2 a
3 b
以及第一个表-n中ID名称的表:
ID Name
---- ----
1 name1
2 name2
3 name3
我需要在pl/sql中查询相同ID(按ID分组)的所有类型中类型出现的计数百分比。
结果必须是:
Name a% b% row
--- ---- --- ---
name1 50 50 1
name2 100 0 2
name3 0 100 3
我尝试过:
select
n.name,
a.perc as "a%",
b.perc as "b%",
row_number() over (
order by name asc
) mf_rownumber
from n n
left join
(select
id,
round(100 * (count(*) / sum(count(*)) over ()), 2) perc
from t
where (type = 'a')
group by id) a
on a.id = n.id
left join
(select
id,
round(100 * (count(*) / sum(count(*)) over ()), 2) perc
from t
where (type = 'b')
group by id) b
on b.id = n.id;
我得到的是所有行中每种类型的百分比:
Name a% b% row
--- ---- --- ---
name1 20 20 1
name2 40 0 2
name3 0 20 3
但我需要计算相同ID边界中的所有内容,而不是所有行。