如何让所有员工的平均工资低于5年

时间:2014-07-19 10:45:02

标签: sql

任何人都可以帮助我,我需要为下一个案例编写查询。 有必要从表中提取公司员工的平均工资超过5年,以及公司员工的平均工资长达5年。

SELECT name,avg(salary)FROM employees WHERE HIREDATE< (2009年7月19日)和 HIREDATE> (19-JUL-09)''

这样好吗?

1 个答案:

答案 0 :(得分:0)

这当然不对 - 你要求雇佣的员工在09年7月19日之前就业,并且在19 - 7月14日之后就业,所以没有人会同时满足这两个人(事实上,没有人会满足第二个条件,因为您不会在数据库中找到您尚未雇佣的人。

您没有说出您正在使用的数据库。另外,你究竟想要什么呢?你想要的东西如下:
Avg salary of employees hired at least 5 years ago = xxxxx Avg salary of employees hired less than 5 years ago = yyyyy

非常粗略,这看起来像这样(我认为这种语法符合MySQL):

SELECT CASE WHEN HIREDATE < '2009-07-09' then 1 else 0 END AS five_years, avg(salary) FROM employees GROUP BY CASE WHEN HIREDATE < '2009-07-09' then 1 else 0 END

或者,我认为这可能在MySQL中起作用以避免常量:

SELECT CASE WHEN HIREDATE < date_add(NOW(), INTERVAL -5 YEAR) then 1 ELSE 0 END AS five_years, avg(salary) FROM employees GROUP BY CASE WHEN HIREDATE < date_add(NOW(), INTERVAL -5 YEAR) then 1 ELSE 0 END