各位大师帮帮忙啊!!!一个关于SQL的简单问题!!

zhoulang3 2008-12-08 02:39:04
就是我所有学生的成绩全在一个表sorce中!!这个表的字段有课程号、学生课程号、学生号、成绩 另外对应的表是课程表lessoninfo有课程名和课程号 一个学生信息表studentinfo字段有:学号和姓名!我现在想求所有学生总成绩的前三名 需要 求出的字段要有这个学生的学号、姓名、课程名、及总成绩 还有最好是写成一句!!! 还有优秀率和合格率!!求求各位大师帮帮忙啊!在此先谢谢啦!!做出第一问也可以!!谢谢啦!!!1
...全文
110 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
caorenlong 2008-12-10
  • 打赏
  • 举报
回复
顶一下
zhoulang3 2008-12-10
  • 打赏
  • 举报
回复
还是不对!!!因为我是运用到VB中的!!我照着加上去没有显示!!!!
qizhengsheng 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happyflystone 的回复:]
SQL code
select top 3 b.课程名,a.学生号,a.成绩
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc


[/Quote]

借用下接点分
lzd1_83 2008-12-09
  • 打赏
  • 举报
回复
select top 3 b.课程名,a.学生号,a.成绩 
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc ]
wxj5595159 2008-12-09
  • 打赏
  • 举报
回复
[code=SQL][select top 3 b.课程名,a.学生号,a.成绩
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc ]
wxj5595159 2008-12-09
  • 打赏
  • 举报
回复

select top 3 b.课程名,a.学生号,a.成绩
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc
wxj5595159 2008-12-09
  • 打赏
  • 举报
回复
SQL code
select top 3 b.课程名,a.学生号,a.成绩
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc
zhoulang3 2008-12-09
  • 打赏
  • 举报
回复
佩服佩服!!!!
龙扬天 2008-12-08
  • 打赏
  • 举报
回复
use a
create table aa
(tel char(10))
drop table aa
insert into aa (tel)values('')
select '445525611'union
select '445111'union
select '4455611'union
select '44555611'union
select '12312323'
select tel=(case when len(tel)=7 then tel else '' end) from aa
这个表的字段有课程号、学生课程号、学生号、成绩 另外对应的表是课程表lessoninfo有课程名和课程号
一个学生信息表studentinfo字段有:学号和姓名!我现在想求所有学生总成绩的前三名 需要
求出的字段要有这个学生的学号、姓名、课程名、及总成绩 还有最好是写成一句!!!
还有优秀率和合格率!
create table Courseinfo
(C_course varchar(10),
C_id int
)
create table studentinfo
(S_no int,
S_name varchar(10)
)
create table Resultsinfo
(R_no int ,
R_id int ,
R_score int
)
insert into Courseinfo(C_course,C_id)
select 'C#',1 union
select 'math',2 union
select 'English',3 union
select 'Chines',4
insert into studentinfo(S_no,S_name)
select 3,'cc'union
select 4,'dd'union
select 5,'ee'union
select 6,'ff'union
select 1,'aa'union
select 2,'bb'
insert into Resultsinfo(R_id,R_no,R_score)
select 1,1,80 union
select 2,1,76 union
select 3,1,80 union
select 4,1,90 union
select 1,2,82 union
select 3,2,85 union
select 2,2,81 union
select 4,2,98 union
select 1,3,65 union
select 2,3,76 union
select 3 ,3,80 union
select 4,3,67 union
select 1,4,82 union
select 3,4,85 union
select 2,4,61 union
select 4,4,98 union
select 1,5,80 union
select 2,5,76 union
select 3,5,80 union
select 4,5,80 union
select 1,6,82 union
select 3,6,65 union
select 2,6,81 union
select 4,6,98
drop table Resultsinfo
我现在想求所有学生总成绩的前三名 需要
求出的字段要有这个学生的学号、姓名、课程名、及总成绩 还有最好是写成一句!!!
还有优秀率和合格率!
select 'C#',1 union
select 'math',2 union
select 'English',3 union
select 'Chines',4
select top 4 s.S_name,
C#=isnull(max(case when c.C_course= 'C# ' then r.R_score end),100),
math=isnull(max(case when c.C_course= 'math ' then r.R_score end),100),
English=isnull(max(case when c.C_course= 'English ' then r.R_score end),100),
Chinese=isnull(max(case when c.C_course= 'Chines' then r.R_score end),100),
总分=sum(isnull( r.R_score,100))
from Courseinfo as c ,Resultsinfo as r,studentinfo as s where c.C_id=r.R_id and s_no=r_no
group by s.S_name
select 优秀率=(select convert(varchar(5), (select count(*) from Resultsinfo where R_score>=85)/count(*)))+'%',
合格率=(select convert(varchar(5),(select count(*) from Resultsinfo where R_score>=60)/count(*)))+'%'

ChinaJiaBing 2008-12-08
  • 打赏
  • 举报
回复

select top 3 a.学号,a.姓号 b.课程名, c.学生号,sum(c.成绩) 总成绩 ,
优秀率=max((select count(*) from score where 成绩>85)/count(*)),
合格率=max((select count(*) from score where 成绩>60)/count(*))
from studentinfo a left join c
on a.学号=c.学号
join lessoninfo b on b.课程号=c.课程号
group by a.学号,b.姓名,b.课程名,c.学生号
order by 总成绩 desc
zhoulang3 2008-12-08
  • 打赏
  • 举报
回复
不好意思!只有总成绩、学号和姓名!不要课程名就可以啦!!!!谢谢提醒啊··22
冷箫轻笛 2008-12-08
  • 打赏
  • 举报
回复
求出的字段要有这个学生的学号、姓名、课程名、及总成绩 还有最好是写成一句!!!

有总成绩还需要课程名吗?如果共有四门课程,那课程名写哪一个呢

-狙击手- 2008-12-08
  • 打赏
  • 举报
回复
select top 3 b.课程名,a.学生号,a.成绩
from (select 学生课程号,学生号,sum(成绩) as 成绩 from sorce group by 学生课程号,学生号)a ,
lessoninfo b
where a.学生课程号 = b.课程号
order by 成绩 desc
jinjazz 2008-12-08
  • 打赏
  • 举报
回复
select top3 * from (select 学生课程号,学生号,max(成绩) as 成绩 group by 学生课程号,学生号)a
order by 成绩 desc

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧