1

このクエリに問題があります

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    

前もって感謝します

アキリクス

乾杯

4

1 に答える 1

2

HAVINGの代わりに句を使用する必要がありWHEREました。

下記参照。

&Addressとして列を持つテーブルがあるとします。CityState

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

マサチューセッツ州で 6 回以上出現するすべての都市の数を示します。

また読む

Definition, Comparison and Difference between HAVING and WHERE Clause

Where Vs Having.

于 2012-07-21T07:33:12.633 に答える