SQL五十道经典题型——(二)查询平均成绩大于60分的学生的学号和平均成绩(简单,第二道重点)

本文介绍如何使用SQL查询平均成绩大于60分的学生的学号及平均成绩,并进一步展示如何通过内连接实现与学生表的数据整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询平均成绩大于60分的学生的学号和平均成绩(简单,第二道重点)

分析题目:

求出平均成绩大于60分的同学

需要用到 AVG(列名)返回某列的平均值,

SELECT
	avg( s_score ) 
FROM
	score

在这里插入图片描述
是计算出这一列的所有成绩平均值,而不是每个同学成绩的平均值,那么我们就需要进行分组用到GROUP BY子句创建分组

SELECT
	avg( s_score ) 
FROM
	score 
GROUP BY
	s_id

在这里插入图片描述
获得每个学生的平均成绩,但是需要大于60分的成绩,对分组进行过滤,所用到的是HAVING子句,在这里WHERE不使用的原因是,WHERE过滤的是行,没有分组的概念。

SELECT
	s_id,
	AVG( s_score ) 
FROM
	score 
GROUP BY
	s_id 
HAVING
	avg( s_score ) > 60

在这里插入图片描述
在这里就算将题目完成,获取到平均成绩大于60分的学生的学号和平均成绩。
但是如果要进行拓展,完成与学生表的连接使用的是 inner join内连接,同时需要将SQL语句中的AVG(s_score)设置别名,如果不设置会找不到s_score这个一列。

SELECT
	st.*,
	avgscore 
FROM
	student AS st
	INNER JOIN ( SELECT s_id, AVG( s_score ) AS avgscore FROM score GROUP BY s_id HAVING avgscore > 60 ) AS s ON st.s_id = s.s_id

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值