关于mysql语句的一道笔试题

本文深入解析了一个利用SQL语句解决实际问题的案例,即如何通过一条语句找出各个班级的各个科目的平均成绩,并按照从大到小的顺序进行排序。详细阐述了SQL查询的关键步骤,包括使用join操作连接多个表、应用聚合函数avg求平均值、正确使用group by和order by子句等要点。

这是今天下午笔试中的一道有关sql语句的题目,题目的大意是这样的:

一个班级表(class),其中的属性有:id, class_name

一个学生表(student),其中的属性有:id, student_name, class_id

一个成绩表(score),其中的属性有:id, student_id, course_name, score

通过一条sql语句找出各个班级的各个科目的平均成绩,按从大到小排序。

我的解答:

select a.class_name, c.course_name, avg(c.score) as avg
from class a, student b, score c
where a.id=b.class_id and b.id=c.student_id
group by a.class_name, c.course_name
order by avg desc;
其中值得注意的是:

(1)avg() 求完平均值后要用as对求得的平均值列命名。

(2)在where后跟多个条件语句的时候,记得使用and 或者 or来连接。

(3)group by 后跟多个列进行分组时,用逗号分开,其表达的意思是先按第一个属性列中的元素进行分组,在分完组的基础上再根据第二个属性列中的元素进行分组。

(4)desc表示从大到小(降序),asc表示从小到大(升序)。

(5)order by 后要写清楚根据那个属性进行升序或者降序进行排序的。

附加一条不在上面出现的值得注意的点:

(1)order by 后跟多个属性时,用逗号隔开,其表达的意思是先根据第一个属性进行升(降)序进行排序,当第一个属性中有相同的值存在的时候,再对这些相同值对应的数据根据第二个属性进行升(降)序进行排序。

以上就是这么多了!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值