我需要帮助解决以下问题:
所以我有一个表 TABLE1,其中包含日期、名称、STAT1、STAT2、PROBLEM1 列
我有一个这样的查询:
SELECT Date, Name, sum(STAT1), sum(STAT2)
FROM TABLE1
WHERE PROBLEM1 <> 0
GROUP BY Date, Name
此查询的结果是我想要的,但我还需要添加 2 列: TOTALCOUNT 基本上是每个组的行数,而不应用过滤器 (PROBLEM1 <> 0 ) 和 COUNTERRORS 是每个组的计数其中 PROBLEM1 = 0。
给你进一步的例子。对于日期 A 和姓名 B,我有 1000 行。其中 300 人的问题 1 = 0。 我运行上面提到的第一个查询,由于过滤器 WHERE PROBLEM1 <> 0,它根据 700 行计算我的 sum(STAT1)、sum(STAT2) 。我需要找到一种方法将两列添加到结果中,以便最后我的表格看起来像:
DATE NAME sum(STAT1) sum(STAT2) TOTALCOUNT COUNTERRORS
A B 50 3.5 1000 300
可以吗?我尝试使用子查询但没有成功。
最佳答案
您可以进行条件聚合:
SELECT Date, Name,
sum(case when PROBLEM1 <> 0 then stat1 else 0 end) as stat1,
sum(case when PROBLEM1 <> 0 then stat2 else 0 end) as stat2,
count(*) as TOTALCOUNT,
sum(PROBLEM1 = 0) as COUNTERRORS
FROM TABLE1
GROUP BY Date, Name;
关于mysql - 将子查询中的列添加到主查询的 SELECT 中,而不应用主查询中 WHERE 的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61344295/