任何人都可以帮助我,我需要为下一个案例编写查询。 有必要从表中提取公司员工的平均工资超过5年,以及公司员工的平均工资长达5年。
SELECT name,avg(salary)FROM employees WHERE HIREDATE< (2009年7月19日)和 HIREDATE> (19-JUL-09)''
这样好吗?
答案 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