好吧,我对SQL有点生疏。我有 2 个完全相同的表,其中包含 ID、名称、性别、BG 列。 BG 是内部参考。我可以单独查询每个表:
SELECT Gender,BG, COUNT(BG) CountValue
FROM income
GROUP BY Gender,BG
结果:
F AA 63
F BA 55
M BB 3
和
SELECT Gender, BG, COUNT(BG) CountValue
FROM outcome
GROUP BY Gender, BG
结果:
F AA 12
F BA 4
M BB 54
我尝试使用UNION ALL
结果的组合来汇总两者。我想将它们与结果汇总在一起:
F AA 75
F BA 59
M BB 57
拥有两个相同的表通常是数据模型的问题。 您应该有一个表格,其中另一列表示"收入"或"结果"。
但是,您可以使用union all
和group by
:
select gender, bg, sum(cnt)
from ((select gender, bg, count(*) as cnt
from income
group by gender, bg
) union all
(select gender, bg, count(*) as cnt
from outcome
group by gender, bg
)
) io
group by gender, bg;
使用union all
可确保仅在一个表中的组位于结果集中。 首先执行group by
可以优化每个子查询,例如是否有索引。 但是,外部group by
也有开销。