总结
SELECT SNO,AVG(GRADE)
FROM SC
EHERE AVG(GRADE)>=90
GROUP BY SNO;
WHERE 子句中不能用聚集函数作为条件表达式
正确结果:
SELECT SNO,AVG(GRADE)
FROM SC
GROUP BY SNO
HAVING AVG(GRADE)>=90;、
where在数据分组前进行过滤,having在数据分组后进行过滤。这是一个重要的区别,where排除的行不包括在分组中。这可能会改变计算值,从而影响having子句中基于这些值过滤掉的分组。
3.
查询每一门课的间接先修课(即先修课的先修课)。
select x.Cno, y.Cpno '间接先行课'
from Course x, Course y
WHERE x.Cpno=y.Cno
4。
avg() 返回某列的平均值; avg()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个avg()函数。avg()函数忽略列值为null的行。
count() 返回某列的行数; count()函数有两种使用方式:count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值。使用country(column)对特定列中具有值的行进行计数,忽略null值。
max() 返回某列的最大值; 虽然max()一般用来找出最大的数值或日期值,但许多(并非所有)DBMS允许将它用来返回任意列中的最大值,包括返回文本中的最大值。在用于文本数据时,max()返回按该列排序后的最后一行。max()函数忽略列值为null的行。
min() 返回某列的最小值; min()函数和max()函数的说明相同。
sum() 返回某列值之和; sum()函数忽略列值为null的行。
5.
order by 子句的位置;在指定一条order by 子句时,应该保证它是select语句中最后一条子句。如果它不是最后一条子句,将会出现错误信息。