MySQL从第二个表加入两个表count和sum

Ole*_*e_S 9 sql join sum count

我有两张桌子:

有一些领域和主键ID的经销商

和以下字段的查询ID dealer_id成本

每个经销商都有几个查询项目,我必须计算它们并总结成本.现在我只有这个陈述的计数:

SELECT a.*, Count(b.id) as counttotal
FROM dealers a
LEFT JOIN inquiries b on a.id=b.dealer_id
GROUP BY a.id
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)

但我不知道如何总结每个经销商的表b的成本.有人可以帮忙吗?提前致谢

Mik*_*scu 14

您可以使用两个子查询:

SELECT  a.*
      , (SELECT Count(b.id) FROM inquiries I1 WHERE I1.dealer_id = a.id) as counttotal
      , (SELECT SUM(b.cost) FROM inquiries I2 WHERE I2.dealer_id = a.id) as turnover
FROM dealers a
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)

要么

SELECT  a.*
     , COALESCE(T.counttotal, 0) as counttotal   -- use coalesce or equiv. to turn NULLs to 0
     , COALESCE(T.turnover, 0) as turnover       -- use coalesce or equiv. to turn NULLs to 0
 FROM dealers a
 LEFT OUTER JOIN (SELECT a.id, Count(b.id) as counttotal, SUM(b.cost) as turnover
               FROM dealers a1 
               INNER JOIN inquiries b ON a1.id = b.dealer_id
              GROUP BY a.id) T
         ON a.id = T.id
ORDER BY a.name
Run Code Online (Sandbox Code Playgroud)


div*_*thi 5

SELECT a.*, Sum(b.id) as TotalCost
FROM dealers a
LEFT JOIN inquiries b on a.id=b.dealer_id
GROUP BY a.id
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)