查询年龄高于各自部门的平均年龄的职工信息,包括职工编号、姓名、性别、学历、所在部门、职级名称和年龄。

img


查询年龄高于各自部门的平均年龄的职工信息,包括职工编号、姓名、性别、学历、所在部门、职级名称和年龄。
使用嵌套子查询的方式查询各自部门的平均年龄作为外层父查询比较的条件。
不会用嘞

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辅助分析,容易理解。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7739751
  • 除此之外, 这篇博客: 数据库练习题34道中的 31、列出所有员工的 年工资, 按 年薪从低到高排序  部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • select 
    	ename,(sal + ifnull(comm,0)) * 12 as yearsal
    from
    	emp
    order by
    	yearsal asc;