我如何才能获得公司平均工资不到 5 年的所有员工

Posted

技术标签:

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

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

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

这样好吗?

【问题讨论】:

显示完整的详细信息以及您尝试了什么? 【参考方案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”谢谢,我会试试这个。

以上是关于我如何才能获得公司平均工资不到 5 年的所有员工的主要内容,如果未能解决你的问题,请参考以下文章

PAT-计算工资

java获取每家公司的平均工资并传递给JSP [重复]

07-SQLSERVER聚合函数

Mysql练习题13道(21-33题)

MySQL子查询(六)

面试题总结之Database