200分求个统计语句(200分)

  • 主题发起人 主题发起人 lfq29463041
  • 开始时间 开始时间
L

lfq29463041

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构如下(成绩信息表):
学号 课程名称 课程序号 成绩
01 数据库 0301 90
02 数据库 0301 80
03 数据库 0301 50
求一个统计语句,当出入课程序号后 能够统计出 选课人数、最高成绩、最低成绩、不及格人数。小弟弟在此谢过。
 
select count(*) as 选课人数,max(成绩) as 最高成绩,min(成绩) as 最低成绩,(select count(*) from 成绩信息表 where 成绩<60) as 不及格人数 from 成绩信息表 where 课程序号='0301'
 
SELECT COUNT(*) AS a, MAX(成绩) AS b, MIN(成绩) AS c,
(SELECT COUNT(*) AS a
FROM 成绩信息表
WHERE 课程序号 = '01' AND 成绩 < 60) AS d
FROM 成绩信息表
WHERE (课程序号 = '01')
我在sql aerver 上测试成功了。
返回的结果是 3 99 59 1
 
楼上的语句挺好的,就是少了一个括号和一个条件。应该改为:
select count(*) as 选课人数,
max(成绩) as 最高成绩,
min(成绩) as 最低成绩,
(select count(*) from 成绩信息表 where 成绩<60) and 课程序号='0301')
as 不及格人数
from 成绩信息表 where 课程序号='0301'
 
我再修改一下,只要一个参数:
select count(*) as 选课人数,
max(成绩) as 最高成绩,
min(成绩) as 最低成绩,
(select count(*) from 成绩信息表 t1
where 成绩<60 and t1.课程序号=t2.课程序号)as 不及格人数
from 成绩信息表 t2 where 课程序号='0301'
 
还有些问题 那位大哥帮下忙啊 在这里说不清楚那位可以QQ指导我一下啊?QQ275580942
先谢谢了
 
大家帮我看一下
procedure TForm12.Button1Click(Sender: TObject);
begin
adoquery1.Filter:='课程序号='''+edit1.Text+'''';
adoquery1.Filtered:=True;
adoquery1.Open;
if adoquery1.RecordCount=1 then
begin
adoquery1.Close;
adoquery1.Params[0].AsString:=edit1.Text;
adoquery1.Open;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.SQL.Add('SELECT COUNT(*),AVG(成绩),MAX(成绩),MIN(成绩)');
adoquery1.SQL.Add('FROM 成绩信息表');
adoquery1.SQL.Add('WHERE 课程序号='''+edit1.text+'''');
adoquery1.Open;
Edit6.Text:=adoquery1['COUNT'];
Edit2.Text:=adoquery1['MAX'];
Edit4.Text:=adoquery1['AVG'];
Edit3.Text:=adoquery1['MIN'];
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT COUNT(*)');
adoquery1.SQL.Add('FROM 成绩信息表');
adoquery1.SQL.Add('WHERE 课程序号='''+edit1.Text+'''');
adoquery1.SQL.Add('AND 成绩<60');
adoquery1.Open;
Edit5.Text:=adoquery1['COUNT'];
end
else
Application.MessageBox('不存在此课程号,请核实!','课程号有误',MB_OK);
end;
end.
 
后退
顶部