繁体   English   中英

不同表中的总和之和

[英]Sum of sums in different tables

我有SQL查询的问题。
我有桌子A:

productA priceA  
P1        18  
P2        35  
P1        22  
P2        19  

还有tableB:

productB priceB  
P1        3  
P2        15  
P1        80  
P2        96  

我希望结果是2个表中的两个产品的总和。

product price  
P1       123  
P2       165  

我想总结两张桌子的总和。
我正在尝试这个查询,但这是错误的。

SELECT productA, 
     (SELECT SUM(priceA) FROM tableA GROUP BY productA), 
     (SELECT SUM(priceB) FROM tableB GROUP BY productB)
FROM tableA, tableB
WHERE productA = productB
GROUP BY productA

请帮我。

您可以使用union来合并表,并对结果进行group by

select  product
,       sum(price)
from    (
        select  productA as product
        ,       priceA as price
        from    TableA
        union all
        select  productB
        ,       priceB
        from    TableB
        ) as SubQueryAlias
group by
        product

这实际上是总和的总和:

select
    product,
    sum(price)
from (
    select productA as product, sum(priceA) as price from tableA group by 1
    union all
    select productB, sum(priceB) from tableB group by 1
) 
group by 1

因为连接似乎是解决此问题的一种自然方式,所以这是一个使用join而不是union的解决方案。 它首先聚合子查询中的数据,然后将结果连接在一起:

select coalesce(a.productA, b.productB) as product,
       coalesce(a.PriceA, 0) + coalesce(b.PriceB, 0) as price
from (select productA, sum(PriceA) as PriceA
      from TableA
      group by productA
     ) a full outer join
     (select productB, sum(PriceB) as PriceB
      from TableB
      group by productB
     ) b
     on a.productA = b.prodctB

我正在使用full outer join ,以防表有不同的产品组。 因此,我需要在select语句中使用coalesce

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM