Mysql_案例3:查询出部门中全部人的平均薪资等级

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Mysql_案例3:查询出部门中全部人的平均薪资等级,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

 案例:查询出部门中全部人的平均薪资等级数据库

背景:当前数据库的department表、salgrade表、employee表,数据分别以下:spa

 

 

情景一、查询部门中全部人的平均薪水的等级code

第一步:先查询出每一个部门的平均薪资,起别名t ,用做临时表(一会放入子查询)blog

-- 查询出每一个部门的平均薪资,起别名t ,用做临时表(一会放入子查询)
SELECT 
        e.departmentid,AVG(e.salary) as avgsal
FROM
        employee as e
GROUP BY
        departmentid;

结果图:class

 最终SQL代码:再为 t 表里的平均薪资查询出对应的薪资等级im

-- 用查询出来的每一个部门平均薪资表t,去匹配薪资等级表,找出每一个部门的平均薪资是属于什么薪资等级
SELECT
        t.departmentid,s.grade
FROM
        (SELECT 
                e.departmentid,AVG(e.salary) as avgsal
        FROM
                employee as e
        GROUP BY
                e.departmentid) t
INNER JOIN
        salgrade s
on 
        t.avgsal BETWEEN s.losal and s.hisal
ORDER BY
        t.departmentid;

 

最终查询后的结果图:d3

 

情景二、查询部门中全部人的薪资等级的平均等级数据

第一步:先查出每一个部门里员工对应的薪资等级,起别名为 t ,用做临时表(一会用做子查询)查询

SELECT 
                e.*,s.grade
FROM 
                employee  e
INNER JOIN
                salgrade  s
ON 
                e.salary  BETWEEN s.losal and s.hisal
ORDER BY 
                departmentid;

结果图:img

最终SQL语句:再对 t 表里的每一个部门员工的薪资等级求均值

SELECT 
        t.departmentid,AVG(t.grade) as avgra
FROM
        (SELECT 
                                    e.*,s.grade
        FROM 
                             employee  e
        INNER JOIN
                                 salgrade  s
         ON 
                             e.salary  BETWEEN s.losal and s.hisal
ORDER BY departmentid ) t

GROUP BY t.departmentid;

结果图: