MySQL использовать группу по столбцу, где условие - PullRequest
2 голосов
/ 29 июня 2010

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

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.....

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

спасибо

Ответы [ 3 ]

8 голосов
/ 29 июня 2010
SELECT column1.....,SUM(Hits) AS HitsSum 
FROM table 
GROUP BY column1.....
HAVING HitsSum > 100
2 голосов
/ 29 июня 2010

Причина ошибки заключается в том, что вы не можете использовать агрегатные функции или псевдонимы столбцов для производных столбцов с использованием агрегатных функций в предложении 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
1 голос
/ 29 июня 2010
SELECT column1.....,SUM(Hits) AS Sum_Hits   
FROM table 
GROUP BY column1.....
HAVING Sum_Hits > 100
...