[英]SQL Oracle query to calculate subtotal
我正在寻找在Oracle SQL中进行分类汇总的正确方法。 记录到此我查询
select model, sifra, velicina, sum(nvl(magacin,0)) as suma
from podmornica
where model ='30001'
group by sifra, velicina, cube (model)
order by model, sifra, velicina
我的桌子上有列podmornica,其列为:model,sifra,velicina,magacin
但这是行不通的。 列模型中的第二行均为空,最后不计算总和。 如何解决呢? 谢谢
PS在一个模型中,我们有SIFRA的变体,因此我不会为一个模型(在这种情况下,模型为30001)的每个SIFRA小计。 像下面
MODEL SIFRA VELICINA SUMA
30001 3000101 0 1
30001 3000102 0 2
30001 3000103 0 5
______________________________
30001 8
这似乎是使用group by grouping sets
的好时机...
SELECT MODEL, SIFRA, VELICINA, sum(nvl(magacin,0)) as SUMA
FROM podmornica
WHERE model ='30001'
GROUP BY GROUPING SETS ((MODEL, SIFRA, VELICINA), (Model))
按模型,sifra和velicina分组以获取详细信息行。 加上这3个领域的magacin ...
按模型分组,以便显示给定模型的总和。
另外,如果您想添加一列,则可以通过将sum(magacin) over (partition by model) as sumB
添加到选择中,从而显示模型每一行的总数。 这种方法正在使用分析/窗口功能。
可能很难找到所需的确切内容,但我认为您需要对所有列进行多维数据集处理:
select model, rgrupa, sifra, velicina, sum(nvl(magacin,0)) as suma
from podmornica
where model ='30001'
group by cube(model, rgrupa, sifra, velicina)
order by model,rgrupa, sifra, velicina
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.