Arco Iris:
Así que lo que estoy tratando de hacer es esto, pero esto no funciona:
Select count(staffno)as total_staff,avg(salary),branchno
From staff
Where total_staff > 1
Group by branchno
He aquí otro ejemplo:
Select salary,salary*1.015 as proposed_salary
From staff
Where proposed_salary > 50000
GMB:
No se puede utilizar una expresión agregada ( sum()
, count()
, ...) de la where
cláusula de la consulta. Esta cláusula se evalúa antes de filas se agrupan por la group by
cláusula, por lo que los agregados no está disponible todavía.
En SQL, ese es el propósito de la having
cláusula:
select count(staffno) as total_staff, avg(salary), branchno
from staff
having count(staffno) > 1 -- MySQL also allows "total_staff > 1"
group by branchno
En cuanto a la segunda consulta: el alias se define en la select
cláusula no está disponible en la where
cláusula o bien (por la misma razón que el anterior). Se puede repetir la expresión:
select salary, salary * 1.015 as proposed_salary
from staff
where salary * 1.015 > 50000
O puede utilizar una tabla derivada (CTE o subconsulta):
select *
from (
select salary, salary * 1.015 as proposed_salary
from staff
) t
where proposed_salary > 5000