Самое простое решение не использует переменную или подзапрос:
select count(name), salary*months as tot
from employee
group by salary*months
order by tot desc
limit 1;
Вы также можете исправить свою версию, используя псевдоним:
select count(name), salary*months as tot
from employee
group by salary*months
having tot = @mte;
Или используя функцию агрегирования:
having max(salary*months) = @mte;
Я думаю, вы могли найти ошибку синтаксического анализа в MySQL.Ваша версия должна работать, но, очевидно, выражение разлагается на ссылки на столбцы - и MySQL считает, что их нужно агрегировать.