我需要得到fname,lname,员工的工资,即使在加薪10%之后,他们的工资也比平均工资低400.00美元。
我能够得到薪水低于平均工资的员工,但我不确定如何在加薪后获得400美元以下的员工。
我正在使用MySQL。谢谢。
select AVG(salary) from employee; #gives me the average salary
select Fname, Lname, Salary, 1.10*Salary as NewSalary
from employee;
#gives me names, old salary and salary raised.
这给了我的员工薪水低于平均工资:
select Fname, Lname, Salary
from employee
where Salary < (select AVG(salary) from employee);
我在想这样的事,但这不起作用;未知栏目新闻报道:
select Fname, Lname, Salary, 1.10*Salary as NewSalary
from employee
where NewSalary - (select AVG(salary) from employee) = 400 ;
你有正确的想法,你不能像这样在where
子句中使用别名。只是直接使用公式,你应该没事。另外,你应该使用<=
,而不是=
:
select Fname, Lname, Salary, 1.10 * Salary as NewSalary
from employee
where 1.10 * Salary - (select AVG(salary) from employee) <= 400;
选择Fname,Lname,Salary,1.10 *薪水为员工的NewSalary((1.10 *薪水) - (从员工中选择AVG(薪水)))<= 400;
您可以使用HAVING通过一个语句执行此操作
select Fname, Lname, AVG(salary * 1.10)
FROM employee
GROUP BY FNAME, LNAME
HAVING (AVG(salary) * 1.10) = 400
但我不明白表中员工平均工资的概念。您可能正在寻找一组员工的平均工资?或者你可能正在存储工资的历史值,但我再次看不出计算平均值的目的。