首先Avg(Score)的别名不是Score,别名是用关键字as
例如:
select Class,CourseName,Term,tTrueName,AVG(Score) as Score From zscore Group BY Class,CourseName,Term,tTrueName
然后,楼主不是很明白Group by的用法啊。
总的来说,Group By的作用就依据你By的条件进行Group(分组)。
举个例子,简单点,让楼主好理解吧。
select * from zscore
数据如上,现在我们要统计各个班级上学期的平均分。
select Class,AVG([[Score)]]]) from zscore where Term='上学期' group by Class
1、SQL SERVER首先会select出一个关于Class,AVG([[Score)]]])且为条件为Term='上学期'd的结果集,可以想象吧?
select Class,[[Score)]]] from zscore where Term='上学期'
2、SQL SERVER会根据分组的字段Class,把这字段的值相同的归并成一条记录。
3、剩下的没有Group By的字段Score,算好平均值后填充到对应的行上
高三一班:语文(80),数学(90),英语(75),平均值:81.666666
高三二班:由于条件为上学期,仅剩下,英语(60),平均值:60
楼主遇到的情况:
select Class,[[Score)]]] from zscore where Term='上学期' group by Class
上述情况,问题出现在第三步,由于高三一班只有一个,而他对应的数据是80,90,75,试问 ,怎么把三个数据填充在一个单元格上呢?对吧,或者,你可以对这三个值进行换算,填充到对应的数据上。这种计算方法,在数据库里,称为聚合。什么是聚合,楼主百度吧。
如果看不懂或者不清楚,继续追问吧。希望可以帮到你。