【问题标题】:How can I get all employees with a avg salary that are in company less than 5 years我如何才能获得公司平均工资不到 5 年的所有员工
【发布时间】:2014-07-19 10:45:02
【问题描述】:

谁能帮助我,我需要为下一个案例编写查询。 需要从表中求出公司5年以上员工平均工资,公司5年以下员工平均工资。

SELECT name,avg(salary) FROM employees WHERE HIREDATE (2009 年 7 月 19 日)''

这样好吗?

【问题讨论】:

  • 显示完整的详细信息以及您尝试了什么?

标签: sql


【解决方案1】:

这当然不对 - 您要求的是在 2009 年 7 月 19 日之前受雇并在 2014 年 7 月 19 日之后受雇的员工,因此没有人会同时满足两者(事实上,没有人会满足第二个条件,因为您不会在数据库中找到尚未雇用的人员。

你没有说你正在使用什么数据库。另外,你到底想要什么?你想要类似:
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

【讨论】:

  • 我写错年份了。是的,情况就是这样“至少 5 年前雇用的员工的平均工资 = xxxxx 不到 5 年前雇用的员工的平均工资 = yyyyy”谢谢,我会试试这个。
猜你喜欢
  • 2019-03-24
  • 2019-08-21
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 2019-01-25
  • 1970-01-01
相关资源
最近更新 更多