表结构
--2、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
思路:
1.sc表和student表依据字段S右连接,使得每一条分数数据都可以对应到学生信息 2.计算每个学生的平均分数-----分组函数group by (注:需跟聚合函数一起使用)
3.筛选平均分数中大于等于60----筛选 having (注:需跟group by一起使用,筛选条件为聚合函数)
注:可使用cast函数,改变数据类型,譬如cast(avg(a.score) as decimal(18,2)) 是平均分数只保留2位小数
select a.S,b.Sname,avg(a.score)
from
sc a left join student b on a.S=b.S
group by b.Sname
having avg(a.score)>=60
order by a.S;
结果如下:
使用cast,
select a.S,b.Sname,cast(avg(a.score) as decimal(18,2))
from
sc a left join student b on a.S=b.S
group by b.Sname
having cast(avg(a.score) as decimal(18,2))>=60
order by a.S;
结果如下: