Я бы порекомендовал использовать подзапрос:
SELECT
count(*) [group-by-count-greater-than-ten]
FROM
(
SELECT
columnFoo,
count(*) cnt
FROM barTable
WHERE columnBaz = "barbaz"
GROUP BY columnFoo
)
AS subQuery
WHERE cnt > 10
В приведенном выше наборе результатов возврата subquery
используется main query
в качестве любой другой таблицы.
Столбец cnt
больше не воспринимается main query
как вычисляемое поле и не должен ссылаться на функцию count()
.
Однако внутри subquery
, в котором выполняется предложение where
или предложение having
, которое должно смотреть на столбец псевдонима cnt
, на функцию count()
следует ссылаться как на ссылку cnt
в subquery
выдаст ошибку.
В вашем случае использование subquery
будет выглядеть примерно так:
SELECT
neighborhood,
age,
count(*) as cnt
FROM
(
SELECT
*,
(YEAR(NOW()) - birthyear) as age
FROM PERSONS
) as WithAge
WHERE age < 18
GROUP BY neighborhood, age