sql - 如何在使用连接的子查询中使用除法?
问题描述
我正在尝试从其他 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
我希望结果会有所不同,现在我想它正在划分所有内容的总和,而不是分开。
解决方案
我不明白你的期望,但也许这个查询可能对你有用:
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
推荐阅读
- powershell - Powershell启动excel自动转义空格
- selenium - 开发人员可以做些什么来协助自动化测试?
- typescript - 打字稿类型定义行太长 - 解决方法?
- fonts - 如何在 SSMS 的 SQL Server 代理作业属性编辑器中更改字体
- sql - 索引 - PL-SQL 中的匹配函数
- arrays - Excel:平均订购时间
- testing - TestCafe 是否需要在每个 test/beforeEach 中调用 useRole
- python - 如何从计算机加载图像数据集并分成两个数据集进行训练和测试?
- tkinter - tkinter 菜单“状态”不动态更新
- ios - 无法识别的选择器发送到实例 0x108b08740