【发布时间】:2017-08-08 06:28:29
【问题描述】:
我按seconditemid 对我的数据进行分组。是否可以计算每行的sum(extcost) 占总和(所有表数据的 extcost 总和)的百分比?
例如我们在结果集中有2行,A1总共4500,A2总共5500,总计应该是10000,A1占45%,A2占55%。
seconditemid|ratio
--------------------
A1 |.45
--------------------
A2 |.55
我的查询是
select seconditemid,
round(100.0*(
sum(case when seconditemid = ---the current row's seconditemid
then 1 else 0 end)/sum(extcost)
),1) as ratio
from inventory_fact f inner join item_master_dim i using (itemmasterkey)
where transtypekey = 1
group by seconditemid
order by 2 desc;
那行不通。我尝试先创建一个视图
create view v1 as(
select sum(extcost) as sumExtcost from inventory_fact
);
并从中选择
select seconditemid, round(100.0*(
sum(extcost)/sum(v1.sumextcost)
),1) as ratio
from from inventory_fact f inner join item_master_dim i using (itemmasterkey), v1
where transtypekey = 1
group by seconditemid
order by 2 desc;
那么每列的比例变成0。
【问题讨论】:
-
2d 查询看起来不错,你确定每个项目都有 >=10% 的价值吗?您只在点后四舍五入到第 1 位
标签: postgresql