MySQL: Как Переопределение Выберите элемент, как «у», то с помощью этого позже в заявлении где

Радуга:

Так что им пытаются сделать это, но это не работает:

Select count(staffno)as total_staff,avg(salary),branchno
From staff
Where total_staff > 1
Group by branchno

Вот еще один пример:

Select salary,salary*1.015 as proposed_salary
From staff
Where proposed_salary > 50000
GMB:

Вы не можете использовать агрегатное выражение ( sum(), count(), ...) в whereпредложении запроса. Это положение оценивается , прежде чем строки сгруппированы по group byстатье, так что агрегаты еще не доступны.

В SQL, это цель havingстатьи:

select count(staffno) as total_staff, avg(salary), branchno
from staff
having count(staffno) > 1 -- MySQL also allows "total_staff > 1"
group by branchno

Что касается второго запроса: псевдоним определен в selectпункте не доступна в whereпункте либо (по той же причине , как указано выше). Вы можете повторить выражение:

select salary, salary * 1.015 as proposed_salary
from staff
where salary * 1.015 > 50000

Или вы можете использовать производную таблицу (КТР или подзапрос):

select *
from (
    select salary, salary * 1.015 as proposed_salary
    from staff
) t
where proposed_salary > 5000

рекомендация

отhttp://43.154.161.224:23101/article/api/json?id=373257&siteId=1