有三个表s(学生表), C(课程表) , SC(学生选课表)
S(SNO, SNAME)代表 (学号,姓名)C(CNO, CNAME, CTEACHER) 代表(课号, 课名, 教师)SC(SNO, CNO, SCGRADE) 代表(学号, 课号, 成绩) create table s( sno int(4) primary key auto_increment, sname varchar(32) ); crate table c( con int(4) primary key auto_increment, cname varchar(32), cteacher varchar(32) ); create table sc( sno int (4), cno int(4), scgrade double(3, 1), constraint sc_sno_cno_pk primary key(sno, cno), constraint sc_sno_fk foreign key(sno) references s(sno), //需要使用其他表的字段,所以在此处增加一个外键的约束 constraint sc_cno_fk foreign key(cno) references c(cno) );第一步:先找出不及格门数大于2的学生编号和姓名
select sc.sno, s.name, count(*) as studentNum from sc join s on sc.sno = s.sno where sc.scgrade < 60 group by sc.sno, s.name having studentNum >= 2;作为临时表t1
第二步:找平均值,作为临时表t2
select sc.sno, avg(sc.scgrade) as avgscgradge from sc group by sc.sno第三步;将t1表和t2表进行连接
select t1.sname, t2.avgscgradge from t1 join t2 on t1.sno = t2.sno