• 首先根据题目要求,查询用户分数大于该岗位平均分数的数据,这一点很重要,因此我们需要先以岗位类型分组,然后求该类型岗位的平均分数,这里需要用到平均数函数AVG,并且为了跟准确,我们保留小数点后三位,会用到函数round
    select job, round(avg(score), 3) as score1 from grade group by job
  • 第一步查询得到一个临时表,表的信息为岗位 : 平均工资
  • 接下来,我们将临时表与原来的数据表进行合并,并求分数大于平均分数的数据,同时使用order by 进行正序排序
    select a.* from 
          grade as a 
      left join 
          (select job, round(avg(score), 3) as score1 from grade group by job) AS b
      on a.job = b.job
      where a.score > b.score1
      order by a.id;