employee_id字段是表employee中employee_id字段的外键。
官方标记,这是一道困难题。而且,如果你先翻到最下面偷瞄了眼参考SQL,大概也会有这样的错觉。
实际上,这是一道非常简单的题目。只是用到的知识点比较多,解题步骤相对也繁琐一些。
源表Salary中记录了所有员工每个月的工资。
源表Employee中记录了所有员工所属的部门。
题目要求:计算出,所有月份所有部门的平均工资与全公司平均工资的比较结果。
因为发薪日期具体到某一天,因此需要将日期转换为月份,使用DATE_FORMAT日期函数可以实现。
然后使用GROUP BY + AVG直接按月份分组统计即可。
这里需要对平均工资保留2位小数,可以使用ROUND函数实现。
第二步:计算出每个部门每个月的平均工资;
与第一步类似,只是需要先关联出每个员工所属的部门。在分组统计时,使用月份+部门ID分组即可。
第三步:对比第一步和第二步的结果;
使用INNER JOIN关联出每个月每个部门的平均工资和全公司平均工资,使用CASE WHEN+条件比较,得出结果并返回。