mysql中两个sql结果值相减:

问题:

求年级第一名所在班级的平均成绩和年级平均成绩的差值

表1: 年级英语分数表(用户ID:UserID,班级ID:GradeID,成绩:Score)

步骤1:直接创建一张表,然后手动增加数据,如上图

步骤2:开始写sql:

思路如下:首先求出年级第一名所在班级的平均成绩

select gradeid  from 表1 order by score desc limit 1;-- 找出最高分的班级id:gradeid

#开始这里我用的是max(score),经过下面的博客指导,我发现我这里不应该使用max(score)来获得最高分对应的gradeid,是可以获得最高分,但是取得的gradeid是错误的,通过order by score desc limit 1就直接取到了最高分对应的gradeid,desc:降序排列   asc:升序排列(切记:需要使用desc,否则按默认的升序asc进行排列,计算的结果是错误的)

-- 查询出班级id为gradeid的所有人分数

select avg(score) from 表1 where gradeid =(    -- avg(score) :   查询出班级id为gradeid的所有人分数的平均分

select gradeid from 表1 order by score desc  limit 1   

-- 查询出年级平均成绩

select avg(score) from 表1

-- 关键地方:当时我不知道怎么写,纠结了半天,然后写出来了

select  (sql结果1)   -  (sql结果2) as  scorecz        ---直接把两个sql的结果相减就得到了:申明:这个只是针对2个sql的结果进行相减的需求。

select

select avg(score) from 表1 where gradeid =(   

select gradeid  from 表1 order by score desc limit 1

( select   avg(score)  from 表1) as ‘平均成绩差值’    

得到的结果如下

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐