查询选修2号课程且成绩在90分
⑴ 求选修课程号位C1且成绩在90分以上的学生学号,姓名和成绩。
select sc.Cnum,sc.name 课程名称,s.num 学号,s.name 姓名,sc.Score
from 学生表 s
left join 课程表 sc on sc.Snum = s.Snum
where sc.Cnum = 'C1' and sc.Score > '90';
兄弟,由于你只是给我看了你写的语句,我不知内道你的表结构,以及字容段信息,所以有些地方我已经用别名帮你取出来了,你自己修改一下。
你的语句问题不大,犯了一点错,就是90分以上了,题目都很明确了,那么就不是=号了,而是大于号,至于说其它的你说没数据,你先select * from一下,看看有没有数据,如果真没有,你可以留下qq,我帮你看看,反正今天周末不上班,我可以抽空帮你看看具体问题。
有问题在留言吧。
⑵ 关于SQL数据查询语句
1
selectcno,cnamefromcourse
2
selectsname,year(getdate())-sagefromstudent
3
select*fromstudentwheresage<20
4
5
(cname,3,1)<>'系'
6
select*fromscwheregradeisnull
7
<20andsdept='计算机系'
8
selectsno,gradefromscwherecno=2orderbygradedesc
9
selectavg(grade)fromscwherecno=2
10
selectcno,count(*)fromscgroupbycno
11
selecta.sname,b.cname,c.grade
fromstudenta,courseb,sccwherea.sno=c.snoandb.cno=sc.cno
anda.ssex='女'
12
selecta.sno,a.snamefromstudenta,scbwherea.sno=b.snoandb.cno=2andc.grade>90
13
selectsno,cnofromscwherecnoin(>3)
14
selectsno,cnofromsca,
(selectcno,avg(grade)avg_gradefromscgroupbycno)b
wherea.cno=b.cnoanda.grade<b.avg_grade
15
selectsname,sagefromstudentwheresdept<>'IS'andsage<any(='IS'andsname='xxxx')
16
(selectsnofromscwherecno=(selectcnofromcoursewherecname='信息系统'))
⑶ 24.查询学生总人数 用sql语言编写
最好拿个表出来,不然写了你们不容易分析懂
⑷ 求数据库原理题 答案 题目如下 尽快
1)select chenji from biao where chenji< (select avg(chengji) from biao)
2)select xuehao,chengji from biao where kechenghao like 'C135' order by xuehao asc
3)update biao set chengji=chengji+5 where chengji<60
4)select xuehao,chengji from biao where kechenghao like 'c135' and chengji <(select avg(chengji) from biao)
5)select xuehao from (select * from biao where kechenghao='C135') where kechenghao in ('C219')
先写到这里,回复见专下文属
⑸ 用SQL语句三种方法查询秋季学期有2门以上课程获90分以上成绩的学生名
1.select SNAME from STUDENT where SNO in
(select SNO from SC where GRADE>90 group by SNO having count(*)>=2)
2.select a.SNAME from STUDENT a,(select SNO from SC where GRADE>90 group by SNO having count(*)>=2) b
where a.SNO=B.SNO
3.select a.SNAME from STUDENT a,SC b where a.SNO=b.SNO and b.GRADE>90
group by a.SNAME having count(*)>2
解释:select SNO from SC where GRADE>90 group by SNO having count(*)>=2 这句就代表按照SNO汇总,分数90以上,并且条数(也就是有两科)也是2门以上(回包含2门),如果只答是2门以上,你可以把=号去掉
⑹ 求“建立查询,查找选修“保险学”且成绩在90分以上的所有学生的学号、姓名、成绩”的SQL语言
现在我们从后面的子查询向前分解:
1.所有未选过的课程的数据集:
select * from 课程 where not exists(
select * from 选读 where 课程号=课程.课程号)
2.所有没被某位学号为 @学号 的学生选过的课程的记录集(@学号学生的未选课程):
select * from 课程 where not exists(
select * from 选读 where 学号=@学号 and 课程号=课程.课程号)
请注意,多出了学号的筛选即,学号=@学号。
3.遍历每一个主查询的学号,每一个学号都按第二筛选方法筛选出:没有未选课程的学生的学号。(不包括在第查询方法查询出的“有未学课程的学号的记录集”中的记录。)
请注意:用主查询中的 学生.学号 代替了@学号。
select 学生.姓名 from 学生
where not exists(
select * from 课程 where not exists(
select * from 选读 where 学号=学生.学号 and 课程号=课程.课程号))
这已经是整个查询语句,可以看出子查询中用学生.学号替换了第2步中的 @学号,(没忘了吧,第二步求的是没有选修全部课程的某个学生)。
用上面的讲解方法不知道是不是更好理解一点。
===============
针对您最后的补充:
为什么不用
from 学生,课程,选读?
答:因为from 学生,课程,选读 也就是
SELECT * FROM 学生,课程,选读 WHERE .....条件
这样的型式只能组成内联接,而内联接我们只知道,只有三个表按联接条件都符合才会被选中,而我们要的是有不符合后面两表的的学生才符合条件,所以用内联接是不可行的。
要不然where句怎么可以调用三个关系的属性呢?
答:在SQL SERVER中规定:所有子表都是可以通过表名调用其上面任意层次的表中的字段的。所以,不是只有内联接才可以调用多个表的属性。
⑺ 数据库高手来
1.(1)在选修表中,按学号分组,查询出所有学号和每个学号对应的课程总数。
(内2)在选修表容中,查询课程号为3的所有学号及分数,查询结果按分数降序排序。
2. 关系代数式都是些乱起八糟的符号,在这里不好敲.....
3.(5)SELECT 姓名,专业 FROM 学生 WHERE 籍贯='山东' AND 性别='男';
(6)SELECT A.学号,A.姓名 FROM 学生 A,选修 B WHERE A.学号=B.学号 AND B.课程号=2 AND B. 分数>=90;
(7)SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 NOT IN (SELECT 学号 FROM 选修 WHERE 课程号='C135');
(8)DELETE FROM 学生 WHERE 学号 IN (SELECT 学号 FROM 选修 WHERE 成绩=0);
4.CREATE VIEW AAA AS SELECT A.学号,A.姓名,B.课程号,B.分数 FROM 学生 A,选修 B WHERE A.学号=B.学号 AND A.专业='英语';
回答完毕.....
⑻ 根据用户要求输出某门课程(由键盘输入课程号)成绩在90分以上(含90分)且总分在前五名的学生情况
#include<stdio.h>
#include<string.h>
#defineMAX_STUDENT_NUM512//学生个数
typedefenum{
SUBJECT_YUWEN,
SUBJECT_SHUXUE,
SUBJECT_YINGYU,
SUBJECT_END
}SUBJECT_TYPE_T;
typedefstructstudent
{
charname[32];//姓名
intindex;//学号
intscore[SUBJECT_END];//单项成绩数组
intavg_score;//平均成绩
intrank;//名次
inttotal_score;//总成绩
}STUDENT_T;
char*subject_str[SUBJECT_END]=
{
[SUBJECT_YUWEN]="语文",
[SUBJECT_SHUXUE]="数学",
[SUBJECT_YINGYU]="英语",
};
//根据学生成绩进行冒泡排序
voidranking(STUDENT_T*a,intcnt)
{
inti=0;
intj=0;
STUDENT_Ttmp={0};
for(i=0;i<cnt;i++)
{
for(j=i+1;j<cnt;j++)
{
if(a[i].total_score<a[j].total_score)
{
memcpy(&tmp,&a[j],sizeof(STUDENT_T));
memcpy(&a[j],&a[i],sizeof(STUDENT_T));
memcpy(&a[i],&tmp,sizeof(STUDENT_T));
}
}
}
//计算名次
for(i=0;i<cnt;i++)
{
//名次要考虑到并列的情况
if(0==i||a[i].total_score!=a[i-1].total_score)
{
j=i+1;
}
a[i].rank=j;
}
}
//计算平均成绩
voidaverage(STUDENT_T*a,intcnt)
{
inti=0;
intj=0;
for(i=0;i<cnt;i++)
{
for(j=0;j<SUBJECT_END;j++)
{
a[i].avg_score+=a[i].score[j];
}
a[i].avg_score/=SUBJECT_END;
}
}
//根据分数和名词找到学生并打印
voidprint_student_by_score_rank(STUDENT_T*a,intcnt,intscore,intrank)
{
inti=0,j=0,h=0,subject=0;
for(j=0;j<SUBJECT_END;j++)
{
printf("学科%s:%d",subject_str[j],j);
}
printf(" ");
printf("请输入想要对比的学科号: ");
scanf("%d",&subject);
for(i=0;i<cnt;i++)
{
if(a[i].score[subject]>=score&&a[i].rank<=rank)
{
h=1;
printf("名次:%d姓名:%s学号:%d平均成绩:%d",a[i].rank,a[i].name,a[i].index,a[i].avg_score);
for(j=0;j<SUBJECT_END;j++)
{
printf("学科%s:%d",subject_str[j],a[i].score[j]);
}
printf(" ");
}
}
if(0==h)
{
printf("没有%s成绩在%d以上且排名在前%d的学生 ",subject_str[subject],score,rank);
}
}
intmain(intargc,char*argv[])
{
inti=0;
intj=0;
intrank=0;
intcnt=MAX_STUDENT_NUM;
STUDENT_Tstudent[MAX_STUDENT_NUM]={0};
chartmp[32]={0};
printf("请输入学生人数: ");
scanf("%d",&cnt);
if(cnt>MAX_STUDENT_NUM)
{
printf("最多%d个学生 ",MAX_STUDENT_NUM);
return;
}
//输入学生信息
printf("请按序号依次输入%d个学生的信息 ",cnt);
for(i=0;i<cnt;i++)
{
printf(" 第%d个学生: ",i+1);
printf("姓名: ");
scanf("%s",student[i].name);
printf("学号: ");
scanf("%d",&student[i].index);
for(j=0;j<SUBJECT_END;j++)
{
printf("%s成绩: ",subject_str[j]);
scanf("%d",&student[i].score[j]);
}
//计算每个学生的总成绩
for(j=0;j<SUBJECT_END;j++)
{
student[i].total_score+=student[i].score[j];
}
}
//计算每个学生的平均成绩
average(student,cnt);
//根据总成绩进行排序
ranking(student,cnt);
//根据成绩和名词找到学生
print_student_by_score_rank(student,cnt,90,5);
return0;
}
这是我以前回答的一个类似问题的答案,我改了下,只通过编译,没怎么试,你如果试的有问题自己改改就行了。
⑼ 从学生选课数据库中查询选修“数据库原理”课并且成绩在90分以上的学生名单,请写出SQL语句.
select sname from student
where sno in(
select a.sno from studentcourse a join course b
on a.cno=b.cno
where b.cname='数据库原理' and a.score>90)
select a.sclass as 班级,count(*) as 不及格人回数答 from
student a join studentcourse b
on a.sno=b.sno
where b.score<60
group by a.sclass