首页 > 解决方案 > 如何在使用连接的子查询中使用除法?

问题描述

我正在尝试从其他 2 个表创建一个汇总表,因为我正在使用子查询,它工作得很好,除了当我尝试划分这两个表时。

问题是第二个子查询在每一行中只显示一个结果,我希望每一行的结果都不同

如何确保显示正确的结果?

我正在尝试 PGAdmin 上的查询,当我单独分组但我不能在一个子查询中分组时它可以工作。

select

    travail_sig.depenses_sage.id_sage,

    (select round(sum(montant),0) as "Budget AV"
    from
    travail_sig.pdm_1621
    where code_action='AGR0703' AND travail_sig.depenses_sage.id_sage=travail_sig.pdm_1621.id_sage),

    (select nullif(round(sum(travaux_finances)*100/sum(montant),1),0) as "avancement AV"
    from 
    travail_sig.depenses_sage
    join
    travail_sig.pdm_1621 
    on travail_sig.depenses_sage.id_sage=travail_sig.pdm_1621.id_sage
    where travail_sig.depenses_sage.code_action='AGR0703' AND travail_sig.depenses_sage.id_sage=travail_sig.pdm_1621.id_sage)

    from 
    travail_sig.depenses_sage
    join
    travail_sig.pdm_1621 on travail_sig.depenses_sage.id_sage=travail_sig.pdm_1621.id_sage
    group by travail_sig.depenses_sage.id_sage

我希望结果会有所不同,现在我想它正在划分所有内容的总和,而不是分开。

标签: sqlpostgresqlsubquery

解决方案


我不明白你的期望,但也许这个查询可能对你有用:

select
    travail_sig.depenses_sage.id_sage,
    round(sum(montant), 0) as "Budget AV,
   nullif(round(sum(travaux_finances)*100/sum(montant),1),0) as " avancement AV"
from
    travail_sig.depenses_sage
join travail_sig.pdm_1621 on
    travail_sig.depenses_sage.id_sage = travail_sig.pdm_1621.id_sage
where
    travail_sig.depenses_sage.code_action = 'AGR0703'
group by
    travail_sig.depenses_sage.id_sage

推荐阅读