带有子查询的聚合函数

Aggregate function with a subquery

如果有人可以指导我回答这个问题,请随意,我会关闭这个问题,但似乎我找到的大多数答案都很简单,与我的问题无关。

无论如何,我的问题是我想将子查询放入聚合查询中。我在下面模拟了一些伪代码来帮助说明我希望能够做什么。令我困扰的是,如果我执行查询并对信息进行硬编码,它可以正常工作,但不适用于查询。

SELECT
    COUNT(*),
    SUM(CASE WHEN subtype IN (SELECT subtype FROM subtype_table WHERE     random_limiter='X') THEN mainTable.quantity ELSE 0)
FROM mainTable
GROUP BY mainTable.groupingColumn

以上代码会出现以下错误:

Cannot perform an aggregate function on an expression containing an aggregate or sub-query.

但是如果我用一些文本替换查询(比如...子类型 IN (1, 2, 3, 4, 5))它工作正常。

有什么方法可以在我的 SUM 中使用查询吗?如果没有,我的其他选择是什么?如果可能的话,我宁愿将其保留在单个查询中。还值得注意的是,在我的实际查询中,我有多个总和,每个总和都有不同的子查询。

SELECT
    COUNT(*),
    COUNT(s.subtype)
FROM mainTable m
LEFT JOIN subtype_table s ON m.subtype = s.subtype AND s.random_limiter = 'X'
GROUP BY m.groupingColumn

查询 #2

SELECT
    COUNT(*),
    COUNT(s.subtype)
FROM mainTable m
LEFT JOIN (
    SELECT DISTINCT subtype
    FROM subtype_table
    WHERE random_limiter = 'X'
) s ON m.subtype = s.subtype
GROUP BY m.groupingColumn