SELECT
employee_id,
name,
gender,
education,
department_id,
rank_title,
YEAR(CURDATE()) - YEAR(date_of_birth) AS age
FROM
tbl_employees
WHERE
YEAR(CURDATE()) - YEAR(date_of_birth) > (
SELECT
AVG(YEAR(CURDATE()) - YEAR(date_of_birth))
FROM
tbl_employees
WHERE
department_id = tbl_employees.department_id
)
使用with as子查询,先计算每个职工的年龄,再使用另一个子查询查出各部门的平均年龄,再关联职位信息表查询年龄高于平均年龄的职工信息。其它信息也是通过内连接查询。with as的用法我的博文里有,可以使用excel辅助分析,容易理解。
select
ename,(sal + ifnull(comm,0)) * 12 as yearsal
from
emp
order by
yearsal asc;