On Wed, 5 May 2004 19:12:00 +0200 
Julien Martin <[EMAIL PROTECTED]> wrote:

> Hello,
> 
> I have a sql query as follows:
> 
> **************************
> SELECT        
>       DB_ESTABLISHMENT_NAME,
>       AVG(DB_GRADE)
> 
> FROM  
>       ESTABLISHMENTS ES LEFT OUTER JOIN GRADES GR ON
> ES.DB_ESTABLISHMENT_ID=GR.DB_ESTABLISHMENT_ID
> 
> WHERE 
>       AVG(DB_GRADE) > 2
> 
> GROUP BY 
>       ES.DB_ESTABLISHMENT_ID
> ;
> **************************
> and I get the following error:
> 
> ERROR 1111: Invalid use of group function
> 
> Can anyone tell me how to use a function in the where clause?

Filtering rows based on the results of aggregate functions is a job for the HAVING 
clause, try:

SELECT  
        DB_ESTABLISHMENT_NAME,
        AVG(DB_GRADE)

FROM    
        ESTABLISHMENTS ES LEFT OUTER JOIN GRADES GR ON
ES.DB_ESTABLISHMENT_ID=GR.DB_ESTABLISHMENT_ID

GROUP BY 
        ES.DB_ESTABLISHMENT_ID


HAVING 
        AVG(DB_GRADE) > 2;

Note that HAVING should be AFTER the GROUP BY, not before it.

Josh

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to