Mysql 获取“[Err]1111-组函数的无效使用”错误

Mysql 获取“[Err]1111-组函数的无效使用”错误,mysql,group-by,mysql-error-1111,Mysql,Group By,Mysql Error 1111,我目前正在执行以下查询: SELECT Date_Format(M.Signupdate,"%Y-%m") as YearMonth, SUM(IF(Count(H.Nr) >= 0,1,0)) , SUM(IF(Count(H.Nr) >= 1,1,0)) , SUM(IF(Count(H.Nr) >= 2,1,0)) , SUM(IF(Count(H.Nr) >= 3,1,0)) FROM people M INNER JOIN History H ON H.lo

我目前正在执行以下查询:

SELECT Date_Format(M.Signupdate,"%Y-%m") as YearMonth,
SUM(IF(Count(H.Nr) >= 0,1,0)) ,
SUM(IF(Count(H.Nr) >= 1,1,0)) ,
SUM(IF(Count(H.Nr) >= 2,1,0)) ,
SUM(IF(Count(H.Nr) >= 3,1,0)) 
FROM people M 
INNER JOIN History H ON H.login = M.Login 
WHERE
M.Masteraccount = "" AND
M.logincount > 5 AND
DATEDIFF(M.lastlogin,M.Signupdate) >= 3 AND
DATEDIFF(H.EntryDate,M.Signupdate) <= 151
GROUP BY YearMonth ORDER BY YearMonth ;

但是,我不断得到[Err]1111-无效使用组函数错误。如果我去掉总数,它就正常工作了。有人能为我提供答案吗?

您不能使用组中的别名。您需要将日期\u FormatM.Signupdate,%Y-%m放在GROUP BY中才能使其生效。此外,您不能嵌套聚合函数,因此需要使用子查询获取计数,然后使用sum:


谢谢你的快速回复!但是,这个查询仍然返回相同的错误:@VincentJames请看我的编辑,我错过了嵌套聚合函数。再次感谢。但是,子查询的DATEDIFFH.EntryDate、M.Signupdate@VincentJames使用WHERE子句获取数据的计数,然后在之后应用总和。它不需要在内部查询中应用过滤器。您不能嵌套聚合函数,因此必须使用subqueryNo,该查询运行起来很有魅力。
select YearMonth,
    SUM(IF(CountNR >= 0,1,0)) ,
    SUM(IF(CountNR >= 1,1,0)) ,
    SUM(IF(CountNR >= 2,1,0)) ,
    SUM(IF(CountNR >= 3,1,0)) 
from
(
    SELECT Date_Format(M.Signupdate,"%Y-%m") as YearMonth,
        Count(H.Nr) CountNR 
    FROM people M 
    INNER JOIN History H 
      ON H.login = M.Login 
    WHERE M.Masteraccount = "" AND
      M.logincount > 5 AND
      DATEDIFF(M.lastlogin,M.Signupdate) >= 3 AND
      DATEDIFF(H.EntryDate,M.Signupdate) <= 151
    GROUP BY Date_Format(M.Signupdate,"%Y-%m") 
) src
GROUP BY YearMonth
ORDER BY YearMonth;