1. sql语句科目表学生表和成绩表的查询
每科的总成绩?查询它干什么?要查的话这样查:
SELECT 科目表.KUMUID,KUMUName,SUM(CHENJI) AS SUM_CHENJI,AVG(CHENJI) AS AVG_CHENJI
FROM 科目表,成绩表
WHERE 科目表.KUMUID=成绩表.KUMUID
GROUP BY 科目表.KUMUID,KUMUName
由于是查每科的总成绩和平均分,所以和学生没有关系,不用关联学生表
----------------------------------------------------------------
不过我怀疑你是不是想查每个学生的总成绩和平均分,是这样查的:
SELECT 学生表.UID,UName,SUM(CHENJI) AS SUM_CHENJI,AVG(CHENJI) AS AVG_CHENJI
FROM 学生表,成绩表
WHERE 学生表.UID=成绩表.UID
GROUP BY UID,UName
=========================================================
对于楼主的补充的回答:
你所要的SQL语句我已经写了,这个查询由于是查询每个科目的总成绩,所以不需要查询学生的姓名,所以不应关联学生表。只需要用成绩表关联科目表(目的是查询出科目的名称)。然后直接使用分组汇总(就是用 GROUP BY 子句和SUM、AVG两个聚合函数实现的)。
分组查询是一种最基本的查询,现在的主流数据库都支持它。所以每一个学习数据库的人都应该很好的理解它。
2. SQL语句,已建立学生表(学号,姓名,性别,专业,出生日期,高考分数)和成绩表(课程号,学号,成绩
1.查询全体男学生情况,要求结果按出生日期降序排列。
select * from 学生表 s
left join 成绩表 c on s.学号=c.学号
where s.性别='男' order by s.出生日期 desc
2.从学生表和成绩表两个表中,检索所有成绩多于85分的学号、姓名、课程号、学期和成绩。
select s.学号,s.姓名,c.课程号,c.学期,c.成绩 from 学生表 s
left join 成绩表 c on s.学号=c.学号
where c.成绩>=85
3.统计每个专业的学生人数
select s.专业,count(*) from 学生表 s group by s.专业
4.检索出哪些至少有一门课程不及格学生的学号、姓名和专业。
select s.学号,s.姓名,s.专业 from 学生表 s
where exists (
select 1 from 成绩表 c where s.学号=c.学号
and c.成绩<60 )
3. 数据库期末考试题 编写SQL语句 1.创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系
create table 学生表
(
学号 char(10) primary key,
姓名 char(10),
年龄 int,
性别 char(2) check (sex IN ('男','女')),
家庭住址 char(40),
联系 char(20)
)
4. sql 学生成绩表多表查询筛选学生的问题
select
t1.*
from
t1
where
t1.id in(select t2.id from t2 where 考试名 in(‘A','B') group by t2.id having count(1)=2)
and
t1.id in(select t3.id from t3 where 课程名 in('C1','C2') group by t3.id having count(1)=2)
5. sql就学生成绩表的查询问题
查询学生XX的各个科目考试成绩:
select 学号,姓名,科目名称,科目代号,成绩
from 学生表 a
inner join 成绩表 b on a.学号=b.学号
inner join 科目表 c on b.科目代号=c.科目代号
where a.学号=XX
查询各个科目考试成绩的最高分的学生学号,姓名和科目及成绩:
select 学号,姓名,科目名称,科目代号,成绩
from 学生表 a
inner join 成绩表 b on a.学号=b.学号
inner join 科目表 c on b.科目代号=c.科目代号
where 成绩=(select max(成绩) from b)
查询各个科目考试成绩低于60分的学生学号,姓名和科目及成绩:
select 学号,姓名,科目名称,科目代号,成绩
from 学生表 a
inner join 成绩表 b on a.学号=b.学号
inner join 科目表 c on b.科目代号=c.科目代号
where 成绩 in(select 成绩 from b where 成绩<60)
6. 求学生表和成绩表的sql语句
select student_id,avg(score),max(score),min(score) from t_score GROUP BY student_id
7. 数据库SQL语句考试
1.
create table A (
S# varchar(20) primary key,
SN varchar(20),
Sex varchar(2),
Age number(10),
Dept varchar(50));
create table B (
C# varchar(20) primary key,,
CN varchar(20));
create table C (
S# number(10),
C# number(10),
Grade number(10));
2.
insert into table A(S#,Sn,Dept) values('010102','张静','机电');
3.
update C set grade=59 where grade>=60;
4.
delete * from C where S# in (select S# from A where Sn like '李%');
delete * from A where Sn like '李%';
5.
select S#,Sex,Age from A where Sn='刘华';
6.
select A.S#,B.C#,B.Cn from A,B,C
where A.Dept not in('计算机系','法律系') and A.S#=C.S# and C.C#=B.C#;
7.
select C.S#,sum(Grade) G from B,C
where Cn='大学语文' and B.C#=C.C# group by C.S# order by G desc;
8.
alter table A drop column Sex;//删除列
alter table A drop Column Age;
update A set SEX='',AGE='';//删除列记录
(不知道你这个删除具体是什么意思,2种你自己选择。)
9.
drop table C;
drop table B;
drop table A; //先删C再删A,否则会报错,无法删除使用记录。
8. SQL 统计每个学生的选课门数和考试总成绩,求各位大大指教
selecta.姓名.count(c.课程号)as选课门数,sum(c.成绩)as总成绩from学生表a,课程表b,成绩表cwherea.学号=c.学号andb.课程号=c.课程号groupbya.姓名
9. sql语句:已知学生表student 字段学生id 学生姓名 班级id 课程名称 考试成绩
oracle.(与sql server的sql语句主要在函数上,我记得sql server没有nvl 有nullif)
(1)
select b.班级名称,a.课程名称,a.平均分 from (select 班级id,课程名称,avg(nvl(考试成绩,0)) 平均分 from student group by 班级id,课程名称) a,class b where a.班级id=b.班级id
(2)
select * from student, (select 学生姓名,count(*) from student where 考试成绩<60 group by 学生姓名 having count(*)>2) a where 考试成绩<60 and student.学生姓名=a.学生姓名
10. SQL 语句查询所有参加考试的学生,从Stu表中和Sco表中
select
*
from
score(成绩表)
where
stuno(考号)
in
(select
stuno
from
student)
思路是这样的,学生表中有的考号在成绩表中出现,就叫做参加考试了,更详细的就是说,机试和笔试成绩都不为null