从一个表中连接多个WHERE的SQL函数结果

时间:2013-11-06 02:36:58

标签: mysql sql join where

我只有一个包含4列的表:A,B,C和D

我有一张所有A-B组合的SUM C表。

SELECT 
A,
B,
SUM(C),
FROM Table
GROUP BY A, B

当C = 1时,我有一张D的AVG表用于所有A-B组合。

SELECT 
A,
B,
AVG(D),
FROM Table
WHERE C = 1
GROUP BY A, B

在保留SELECT的单个查询中重新组合这些GROUP BY A, B语句的最佳方法是什么?

我尝试RIGHT JOIN ... ON A.Table = A.Table AND B.Table = B.Table,但这并没有完全奏效。

2 个答案:

答案 0 :(得分:1)

您可以使用条件聚合来完成:

SELECT A, B, SUM(C),
       avg(case when C = 1 then D end)
FROM Table
GROUP BY A, B

答案 1 :(得分:0)

SELECT A, B,
    Sum(C) SumC,
    Sum(case C when 1 Then D else 0 end) /
    Sum(case C When 1 then 1 else 0 end)  AVGOfDForC1Rows,
FROM Table
GROUP BY A, B