获取错误 #1111 - 组函数的使用无效

Posted

技术标签:

【中文标题】获取错误 #1111 - 组函数的使用无效【英文标题】:Get error #1111 - Invalid use of group function 【发布时间】:2012-07-20 08:45:18 【问题描述】:

我对这个查询有疑问

SELECT SUM(ROUND( SUM( note=3 ) / count( note=3 ) )) AS AVG, sma_famille.famille
                FROM sma_notes, sma_famille, sma_agents, sma_service_activite
                WHERE sma_famille.id_famille >=14
                AND sma_famille.id_service =9
                AND sma_notes.id_agent >=7
                GROUP BY sma_famille.id_famille

我收到错误消息

#1111 - Invalid use of group function

如果有人有这种查询的经验。

这里是查询的一些细节:

我在没有第一个 SUM 的情况下进行查询(这是整个查询代码)

    SELECT ROUND( SUM( note =3 ) / count( note =3 ) ) AS AVG, sma_famille.famille, sma_notes.id_agent
    FROM sma_notes, sma_famille, sma_agents, sma_service_activite
    WHERE sma_famille.id_famille >=14
    AND sma_famille.id_service =9
    AND sma_notes.id_agent >=7
    AND sma_notes.id_agent = sma_agents.id_agent
    AND sma_service_activite.id_activite = sma_notes.id_activite
    AND sma_service_activite.id_famille = sma_famille.id_famille
    GROUP BY sma_famille.id_famille, sma_notes.id_agent

比我得到的结果如下:

    AVG | famille   | id_agent  
    3   |BEL        | 7 
    2   |BEL        | 8 
    1   |BEL        | 9 
    1   |CEL        | 7 
    2   |CEL        | 8 
    1   |CEL        | 9 

但是我的查询谁不起作用:

SELECT SUM(ROUND( SUM( note=3 ) / count( note=3 ) )) AS AVG, sma_famille.famille
    FROM sma_notes, sma_famille, sma_agents, sma_service_activite
        WHERE sma_famille.id_famille >=14
        AND sma_famille.id_service =9
        AND sma_notes.id_agent >=7
        AND sma_notes.id_agent = sma_agents.id_agent
        AND sma_service_activite.id_activite = sma_notes.id_activite
        AND sma_service_activite.id_famille = sma_famille.id_famille
        GROUP BY sma_famille.id_famille

我想得到这个结果:

    AVG | famille
    6   |BEL    
    4   |CEL    

提前致谢

阿基利克斯

干杯

【问题讨论】:

阅读这里:***.com/questions/2330840/… 【参考方案1】:

您应该使用HAVING 子句而不是WHERE

见下文。

考虑我有一个表Address,其列为City & State

HAVING 用于在聚合发生后检查条件。

WHERE 在聚合发生之前使用。

这段代码:

select City, CNT=Count(1)
From Address
Where State = 'MA'
Group By City

为您提供马萨诸塞州所有城市的计数。

这段代码:

select City, CNT=Count(1)
From Address
Where State = 'MA'
Group By City
Having Count(1)>5

为您提供 MA 中出现 6 次或更多次的所有城市的计数。

另请阅读

Definition, Comparison and Difference between HAVING and WHERE Clause

Where Vs Having.

【讨论】:

我在查询的末尾放了 HAVING COUNT(AVG) >1 但我仍然收到相同的错误消息。它很沮丧:-(或者如果我在查询中的其他地方有错误??? @achillix :而不是 WHERE 使用 HAVING 不,它不起作用。我已将 Where 替换为 HAVING,但我收到错误消息 #1064 Syntax Error near 'GROUP BY sma_famille.famille HAVING SUM(AVG) >1 Can't understand

以上是关于获取错误 #1111 - 组函数的使用无效的主要内容,如果未能解决你的问题,请参考以下文章

MySQL,混淆 w/查询/错误代码:1111。组函数的使用无效。

SQLSTATE[HY000]: 一般错误: 1111 无效使用组函数 (SQL: select GROUP_CONCAT(sum(documents.grand_total) SEPARATOR &

错误代码1111。无效使用组功能

MySQL 错误 #1111

遇到 SQL 错误 1111 的问题

错误笔记MyBatis SQLException: 无效的列类型: 1111