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]