MySQL:按查询统计分组总数

MySQL:按查询统计分组总数,mysql,Mysql,我有一张这样的桌子: ----------------------------------- | Name | Date | Campaign | ----------------------------------- | John | July | Email | | Carl | August | Phone | | John | July | Phone | | Robert | August |

我有一张这样的桌子:

----------------------------------- | Name | Date | Campaign | ----------------------------------- | John | July | Email | | Carl | August | Phone | | John | July | Phone | | Robert | August | Phone | | Carl | September | Email | | John | August | Phone | | Carl | August | Email | | John | July | Email | | Robert | September | Phone | | Carl | August | Email | ----------------------------------- 我按日期和活动对数据进行分组,但我希望增加一列,以显示包含该活动的行的总数

我使用的查询:

SELECT campaign,name, SUM(IF(date = 'July',1,0)) AS July, SUM(IF(date = 'August',1,0)) AS August, SUM(IF(date = 'September',1,0)) AS September FROM table GROUP BY name,campaign 但我想修改它以获得以下输出:

---------------------------------------------------------------------------------------- | Campaign | Name | July | August | September | SUM July | SUM August | SUM September | ---------------------------------------------------------------------------------------- Email John 2 0 0 2 2 1 Phone John 1 1 0 1 3 1 .... .... 我想与所有的电话或电子邮件按月份区分的值的总和列


添加:

我意识到这并不是你想要的,但这是一种通过分组获得总数的简单方法。。。使用汇总:

输出:

Campaign    Name    July    August  September
Email       Carl    0       2       1
Email       John    2       0       0
Email       (null)  2       2       1
Phone       Carl    0       1       0
Phone       John    1       1       0
Phone       Robert  0       1       1
Phone       (null)  1       3       1
(null)      (null)  3       5       2
campaign    name    July    August  September   campaign    Julysum Augustsum   Septembersum
Email      John     2      0       0           Email         2     2    1
Phone      John     1      1       0           Phone         1     3    1
每种类型的活动的每月总数显示在带有活动名称和名称空值的行中。两种类型活动的每月总计显示在底部一行,活动和名称的值为空

请尝试以下内容:

输出:

Campaign    Name    July    August  September
Email       Carl    0       2       1
Email       John    2       0       0
Email       (null)  2       2       1
Phone       Carl    0       1       0
Phone       John    1       1       0
Phone       Robert  0       1       1
Phone       (null)  1       3       1
(null)      (null)  3       5       2
campaign    name    July    August  September   campaign    Julysum Augustsum   Septembersum
Email      John     2      0       0           Email         2     2    1
Phone      John     1      1       0           Phone         1     3    1

提示:您需要子查询来解决您的问题。这是我想应用的选择,但我找不到解决方案。请考虑在演示层/应用程序级代码中处理数据显示的问题,假设您有一个简单的PHP循环,作用于有序数组。不需要子查询。将数据导出到SQL我不能使用PHP ScriptsHanks来提供帮助,这对我来说不是一个好的解决方案,我需要它们作为列而不是行。不用担心,我不确定你有多受限制,所以我认为我应该提供此帮助谢谢你。这个答案与解决方案非常接近,但有2倍的活动列,并且必须导出一个SQL,该SQL被导入到我无法添加列的系统中,这是一个小问题。我已经更新了列选择-您现在可以检查