【发布时间】:2014-07-19 10:45:02
【问题描述】:
谁能帮助我,我需要为下一个案例编写查询。 需要从表中求出公司5年以上员工平均工资,公司5年以下员工平均工资。
SELECT name,avg(salary) FROM employees WHERE HIREDATE (2009 年 7 月 19 日)''
这样好吗?
【问题讨论】:
-
显示完整的详细信息以及您尝试了什么?
标签: sql
谁能帮助我,我需要为下一个案例编写查询。 需要从表中求出公司5年以上员工平均工资,公司5年以下员工平均工资。
SELECT name,avg(salary) FROM employees WHERE HIREDATE (2009 年 7 月 19 日)''
这样好吗?
【问题讨论】:
标签: sql
这当然不对 - 您要求的是在 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
【讨论】: