语法:
WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
GROUP BY 子句用来分组 WHERE 子句的输出。
HAVING 子句用来从分组的结果中筛选行
实例:
表结构:
Student{Sno, Sname, Ssex, Sbirthday, Class}
Course{Cno, Cname, Tno}
Score{Sno, Cno, degree}
Teacher{Tno, Tname, Tbirthday, Tprofessional, Department}
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,1977-09-01,95033);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');
问题:
1. 查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
2. 查询“95033”班所选课程的平均分。
答案:
1.
select avg(degree),cnofrom score
where cno like '3%'
group by cno
having count(sno)>= 5;
2. select AVG(S.Degree) from Score S JOIN Student Stu ON S.Sno=Stu.Sno where Stu.Class="95033" ;