2016-07-27 146 views
0

嗨我正在尝试对一系列子查询进行分组,但不断为每行获得相同的结果。如何在MySQL中对多个子查询进行分组

 SELECT Campaign_Name, 
        (SELECT COUNT(Bounce) 
        FROM `temp_Data`) AS Sent, (SELECT COUNT(Bounce) 
              FROM `temp_Data` 
              WHERE Bounce = '0') AS Delivered, (SELECT SUM(Opened) 
                 FROM `temp_Data` 
                 WHERE Opened = '1')AS Opened 
FROM temp_Data 

GROUP BY Campaign_Name 

结果是:

Campaign Name Sent Delivered Opened 
Campaign1  300 278  196 
Campaign2  300 278  196 

我的数据是0.1所以,即使我总结它仍然给了我同样的结果。

如何获得每个广告系列的个人计数?

+0

更改'where子句'你不改变它。 – NEER

+0

向我们展示您的表架构如何。 – Martin

回答

0

这可以在一个单一的查询

SELECT 
    Campaign_Name, 
    COUNT(*) AS Sent, 
    COUNT(CASE WHEN Bounce = '0' THEN 1 ELSE NULL END) AS Delivered, 
    COUNT(CASE WHEN Opened = '1' THEN 1 ELSE NULL END) AS Opened 
FROM temp_Data 
GROUP BY Campaign_Name 

做看看control functionsCOUNT

棘手的部分是COUNT不增加NULL值,所以我用它来做一个选择性计数。

+0

谢谢,但是您的代码返回语法错误:您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在'THEN 1 ELSE NULL'附近使用正确的语法, COUNT(CASE Opened ='1'THEN 1 ELSE NULL)AS'at line 4 – Drake

+0

我认为我修复了它。请立即检查。 – evilpenguin

+0

对不起还是一样的错误 – Drake

相关问题