MySQL использует группу по столбцу, где условие

Как я могу заставить этот запрос работать:

SELECT column1.....,SUM(Hits) AS Hits   
FROM table 
WHERE  SUM(Hits) > 100
GROUP BY column1.....

Проблема заключается в предложении where, ошибка отображения mysql:

Error Code : 1111
Invalid use of group function

Я пытаюсь изменить запрос на:

 SELECT column1.....,SUM(Hits) AS Hits   
    FROM table 
    WHERE  Hits > 100
    GROUP BY column1.....

Это не помогло.

спасибо


person Haim Evgi    schedule 29.06.2010    source источник


Ответы (1)


Причина ошибки в том, что вы не можете использовать агрегатные функции или псевдонимы столбцов для производных столбцов, использующих агрегатные функции, в предложении WHERE. Их можно использовать только в предложении HAVING, которое требует определения предложения GROUP BY (если оно еще не существует).

Я не рекомендую использовать псевдоним столбца в предложениях GROUP BY или HAVING — есть риск, что запрос не будет переносим в другие базы данных. SQL Server — единственная известная мне база данных, которая поддерживает псевдонимы столбцов в предложениях GROUP BY или HAVING.

  SELECT t.column1....., SUM(t.hits) AS HitsSum 
    FROM TABLE t
GROUP BY t.column1.....
  HAVING SUM(t.hits) > 100
person OMG Ponies    schedule 29.06.2010