【发布时间】:2020-09-25 14:19:13
【问题描述】:
我有一张这样的桌子
我有一个查询显示每个地区生产的车辆数量和该地区生产的车辆百分比
select
COALESCE(Region, 'Total') AS Region,
count(veh_vin) as "Total Vehicles Manufactured",
round(ratio_to_report(count(veh_vin)) over(),2) as rr
from(
select
case
when substr(veh_vin,1,1) between 'A' and 'C' then 'Africa'
when substr(veh_vin,1,1) between 'J' and 'R' then 'Asia'
when substr(veh_vin,1,1) between 'S' and 'Z' then 'Europe'
when substr(veh_vin,1,1) between '1' and '5' then 'North America'
when substr(veh_vin,1,1) between '6' and '7' then 'Oceania'
when substr(veh_vin,1,1) between '8' and '9' then 'South America'
else 'Unknown'
end as Region,
veh_vin
from vehicle
)
group by ROLLUP(Region)
order by count(veh_vin), Region;
这给了我以下结果
但我想要这样的东西,在计算百分比时不包括总数。
是否可以通过 ratio_to_report 来实现?如果没有,我该如何更改查询?
【问题讨论】:
-
我认为这可能会有所帮助 - stackoverflow.com/questions/13721093/…
标签: sql oracle percentage rollup