sql 语言查询 查询出有两门不及格的学生信息。 查询各个班级的各门课程的平均分
(1)如何体现两门不及格!
(2)如何体现各门课程的平均分,各个班级!
令有些词可以自己写(题中没有写到的如student,class,score等)
急急急急急!~!!!
(1)查询出有两门不及格的学生信息。
(2)查询各个班级的各门课程的平均分 展开
1、查询出有两门不及格的学生信息:
create table student(
sno int not null primary key,
sname varchar(10)
)
create table center(
cno int not null primary key,
cname varchar(10)
)
create table sgrade(
sno int ,
cno int ,
sgrade int
)
2、查询各个班级的各门课程的平均分:
select sno, avg(sgrade) avgs
from sgrade
group by sno
扩展资料:
用Where子句配合score<60的条件,筛选出所有不及格的人和其不及格的课程。
where是数据库中的一个指令,一般用于规定选择的标准。SELECT列名称FROM表名称WHERE列运算符值。
对于学生的不及格信息可以使用COUNT函数,用于Excel中对给定数据集合或者单元格区域中数据的个数进行计数,其语法结构为COUNT(value1,value2, ...)。COUNT函数只能对数字数据进行统计。
参考资料来源:百度百科-COUNT函数
参考资料来源:百度百科-where (数据库中的一个指令)
思路:
1.先用Where子句配合score<60的条件,筛选出所有不及格的人和其不及格的课程
2.再用group by子句依据姓名进行分组,并用count函数来统计每个人不及格的课程数
3.最后用having子句对分组聚合后的结果进行筛选出count统计结果等于2的学生
写下来大概是这样的
select student,count(*)
from 表
where score<60
group by student
having count(*)=2
(2)查询各个班级的各门课程的平均分
思路:
就是按班级和课程来分组,求改组班级和课程的平均分
select class,课程,avg(score)
from 表
group by class,课程
select * from ((select 姓名 from student where clazz1<60)UNION ALL (select 姓名 from student where clazz2 <60) ) as a GROUP BY a.姓名 having count(*) >1
create table student(
sno int not null primary key,
sname varchar(10)
)
create table center(
cno int not null primary key,
cname varchar(10)
)
create table sgrade(
sno int ,
cno int ,
sgrade int
)
insert into student values(11,'a');
insert into student values(12,'b');
insert into student values(13,'c')
select * from student
insert into center values(21,'aa');
insert into center values(22,'bb');
insert into center values(23,'cc')
delete from student where sno =23
insert into sgrade values(11,21,54);
insert into sgrade values(12,22,57);
insert into sgrade values(11,21,51);
insert into sgrade values(12,21,36);
insert into sgrade values(11,21,28);
insert into sgrade values(12,22,42);
insert into sgrade values(11,21,59)
insert into sgrade values(11,21,79);
insert into sgrade values(12,22,85);
insert into sgrade values(11,21,90);
insert into sgrade values(12,21,96);
insert into sgrade values(11,21,98);
insert into sgrade values(12,22,94);
insert into sgrade values(11,21,99)
---查询两门及以上成绩小于60的学生:
select st.sno ,st.sname ,count(*)--- 门数
from student st ,sgrade sg
where st.sno=sg.sno and sgrade < 60
group by st.sno ,st.sname
having count(*)>=2
--查询平均成绩 :
select sno, avg(sgrade) avgs
from sgrade
group by sno
已在SQL SERVER 2000 或2005上测试通过。
按照两个条件来麻烦
还不如分开来写
不会,怎么分开写,好长时间没学了!!!
忘了,是两条题目!!!!
select * from .. where student='' and score <'60'
select class,avg(score) from where class=''
好久没写了 大概是这样吧