查询及格学生的平均成绩
A. ACCESS查询学生选课平均成绩中及格的学生
第三列的总计行不对
不应该选择 group by 应该选择 where
B. 数据库题目: 建立存储过程,其功能是查询给定学号的学生的课程平均成绩(必做)、选修课程的门数和不及格
主要问题是存储过程主体缺少begin 和 end 语句,使得后面的测试语句也被编译成了存储过程专的主体,从而造成了递归(属存储过程调用自己)。
alter procere 学生信息
@snum varchar(4),
@AvgScore int OUTPUT,
@CourseNum int OUTPUT,
@NotpassNum int OUTPUT
AS
BEGIN
Select @AvgScore = Avg(Score) From SC Where SC.snum = @snum
Select @CourseNum = Count(*) From SC Where SC.snum = @snum
Select @NotpassNum = Count(*) From SC Where SC.snum = @snum and score<60
END
另外,分号是SQL语句的结束符,不明白为什么有存储过程名后面会紧跟着一个分号。
C. C语言程序,请你编写一个程序计算每个学生的平均成绩
#include<stdio.h>
void main()
{
float a[10][10];//用来存放10名学生的5门成绩,最后一位用于存放平均成绩
int i,j;
float sum=0.0;
for(i=0;i<10;i++)
{
printf("请输入第%d个学生的5门成绩",i+1);
for(j=0;j<5;j++)
{
scanf("%f",&a<i>[j]);
sum=sum+a<i>[j];
}
a<i>[10]=sum/5.0;
}
printf("10名学生的成绩及平均分 ");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%.3f",a<i>[j]);
printf(" ");
}
}
(3)查询及格学生的平均成绩扩展阅读:
printf的用法
格式
printf函数的原型为:
#include<stdio.h>
int printf(const char*format,...);
在讲每一个函数的时候都会先把它的函数原型写出来,这个原型你们现在看不懂不要紧,等到学完C语言之后再来看这个原型就会发现它是很有参考意义的!它对深刻理解函数有着很大的价值。
printf的格式有四种:
1)printf("字符串 ");
#include<stdio.h>
int main(void)
{
printf("Hello World! ");// 表示换行
return 0;
}
其中 表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中n是“new line”的缩写,即“新的一行”。
此外需要注意的是,printf中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。
2)printf("输出控制符",输出参数);
纯文本复制
#include<stdio.h>
int main(void)
{
int i=10;
printf("%d ",i);/*%d是输出控制符,d表示十进制,后面的i是输出参数*/
return 0;
}
D. 查询表student(id,score,subject)中所有科目成绩在60分以上的学生的平均分成绩怎么写sql语句
应该有学生Id啊比如学生Id是stuid,这样写。
SELECTAVG(score)
FROMstudent
WHEREstuidIN(
SELECTstuid
FROMstudenta
WHERENOTEXISTS(SELECT1
FROMstudentb
WHEREa.stuid=b.stuid
ANDb.score<60))
E. 使用SQL SELECT语句查询每个学生的平均成绩,在线等。
你没有告诉学生表和成绩表的关联字段,假设是id。 select 学生.姓名,avg(成绩回.成绩) as 平均成绩 into pinjun.dbf
from 学生答 inner join 成绩 on 学生.id=成绩.id
order by 学生.姓名
F. SQL求选修课程在两门以上并且都及格的学生号及总平均分
我只会oracle的写法,其他数据库可能会有所区别,请注意。而且就算这种写法,因为专无法实验可能也有些出入,应属该需要调试
select 学生号,avg(分数) from table where 分数>=60 group by 学生号 having count(*)>1
分数>60保证及格,这里首先查询的是及格的学生,及格的学生如果count(*)>1,那么他的选课一定是两门或者两门以上(我假定的选课表是一个学生一个课程一行)。不过这里有一个问题,假设一个学生选了三门课程,两门及格一门不及格,那么是不是需要统计,按照你的需求
“两门以上并且都及格”,现在这个语句好像与你的要求不是那么符合。
所以还有一个版本
select table.学生号,avg(table.分数) 平均分 from table,(select 学生号,count(*) 选课数 from table group by 学生号 having 选课数>1)a where table.分数>60 group by 学生号 having table.学生号=a.学生号 and a.选课数=count(*)
G. 查询平均成绩低于60分的学生学号、姓名及成绩。
SELECT 学号,成绩 FROM 成绩表
WHERE 学生表.学号专 IN
(
SELECT 学号 FROM (
SELECT 成绩属表.学号,AVG(分数) AS AVGSCORE FROM 成绩表
GROUP BY 学号
HAVING AVG(成绩表.成绩)<60
)A
)
H. 排错SQL:列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
因为你按照s.sname分了组并且用了聚集函数avg(sc.scgrade),就必须用group by按照s.sname分组才行啊,如果select中没专有s.sname,只有聚集函数avg(sc.scgrade)的话肯定属就是对的,但是不符合你题目的要求了。下面这个就是对的了,因为除了聚集函数的选择项都被分组了,在上面那个后面加上group by s.sname应该就对了,不过不知道sname是不是唯一键。
唉,也不知道自己说清楚没,不清楚的可以发信问我。
I. 一个学生表和成绩表,列出至少两门以上不及格学生的名字和平均成绩,怎么写
光有自学生表和成绩表不行吧,我理解为有三个表S(学号s#,姓名sname,。。。)、C(课程号c#,课程名cname,。。。)、SC(学号s#,课程号c#,成绩grade。。。)
select sname,avg(grade)
from s,sc
where s.s#=sc.s# and grade<60
group by sname
having by count(grade)>=2
J. mysql,查询平均成绩不及格的学生名单。。。
select avg(sx+yy+hx)/3<60 from tb_chengjibiao
修改为
select (sx+yy+hx)/3<60 from tb_chengjibiao