【问题标题】:JOIN SQL function results with multiple WHERE from one tableJOIN SQL 函数结果与一个表中的多个 WHERE
【发布时间】:2013-11-06 02:36:58
【问题描述】:

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

对于所有 A-B 组合,我有一个 C 的 SUM 表。

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,但这并不完全奏效。

【问题讨论】:

    标签: mysql sql join where


    【解决方案1】:

    您可以使用条件聚合来做到这一点:

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

    【讨论】:

    • 非常感谢您的帮助
    【解决方案2】:

    试试

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多