MySQL又是小杨同学努力学习的一天-第二题

博主分享了一次在编写SQL查询时遇到的逻辑错误,探讨了如何从结果导向出发,正确选择select字段和使用子查询。文中通过一个具体的查询案例,解释了如何根据学生编号和姓名从score和student表中获取平均成绩大于等于60分的学生信息。同时,对group by的使用进行了个人理解的阐述,强调其在汇总一对多关系数据时的作用。
摘要由CSDN通过智能技术生成

11.23-50题第二题-今天也是努力学习的小杨同学

第二题的题目为:查询平均成绩大于等于60分的同学的编号、姓名信息以及平均成绩。

应用的数据与第一题一致
关系如下:
在这里插入图片描述
写这道题的过程中出现了一个脑瘫式思维逻辑刚好可以写出来让大家嘲笑一下!当然也希望大家在自己练习或者是工作学习中可以作为一个小经验。
错:在这里插入图片描述
select b.s_id,b.s_name,a.pingjunfenshu,a.s_score from
(select s_id,s_score,avg(s_score) as pingjunfenshu from score) as a
inner join
(select s_id,s_name from student) as b
on a.s_id=b.s_id

group by a.pingjunfenshu
having pingjunfenshu >= 60
;
结果如图:在这里插入图片描述
原因:或者我们可以在评论里一起讨论一下呀
正常的逻辑思维是:同样是结果导向,要什么select什么。
题目中要的是学生的编号和名字-student表
学生的成绩-score表
student与score之间的联结通过图的逻辑 s_id进行。

select s_id,s_score,avg(s_score) as pingjunfenshu from score as a
inner join
select s_id,s_name from student as b
on a.s_id=b.s_id

那我要的是三个参数
第一个 student中的s_id,s_name
第二个 score中的s_score,avg(s_score)
**avg(平均值关键字)
第三个 平均成绩大于等于60分的同学
因为有表中没有的参数并且作为查询的条件,所以我要建立子查询。
即为:
在这里插入图片描述

select a.s_id,b.s_name,a.pjfs from(
(select s_id,avg(s_score) as pjfs
from score group by s_id having pjfs>60) as a
inner join
(select s_id,s_name from student) as b
on a.s_id=b.s_id
) order by pjfs desc;
插一句自己对group by的理解:对于1对多的参数就可以用group by进行汇总,感觉有点像树状图。
结果为在这里插入图片描述
啊这美好的一天
ps:记录自己学习的过程,别来上纲上线奥,否则小心顺着你的网线咬死你!
如果有一起学习的小伙伴一起努力呀!!!fighting!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值