sql 查询每个班前十名

有一张表,存储了各班级的学生信息及成绩,怎么查询每个班成绩前十名的学生信息... 有一张表,存储了各班级的学生信息及成绩,怎么查询每个班成绩前十名的学生信息 展开
 我来答
工程师首岳
2010-02-03 · TA获得超过278个赞
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:113万
展开全部
表建的很不合理啊
首先,班级要一张表
学生信息要一张表
成绩一张表

建数据库要有遵守三条原则啊,不然也很不方便查询
你这题,用分组也没办查. 楼上两位完全就是骗分的...没一个正确的

就说一楼的这句SELECT TOP 10 * FROM 表名 WHERE 条件 ORDER BY 成绩 DESC ...请问条件是什么?

再说二楼的selet top 10 * from 学生表 order by 成绩 desc
你这查出来的只是所有班所有前十名的成绩.而不是每个班的前十名

如果表只有一张,只能分班查...比如班级列叫calss,其中有一个班级Classone
select top 10 * from 表名 where class='Classone' order by 成绩
东仔猪
2010-02-03 · 超过31用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:94.8万
展开全部
举例:
表[ClassInfo]:[ClassID],[StuID],[Score]
SQL如下:(每个班成绩前十名学生)

select a.*
from [ClassInfo] a
where (select count(*) from [ClassInfo] b on b.[ClassID]=a.[ClassID] and b.[Score]>a.[Score])<10
order by a.[ClassID] desc,a.[Score] desc

如果是学生信息表和学生成绩表用得是2个实体表,那就用连接查询,这里就不举例了。
明白?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6a7d11453
2010-02-04 · TA获得超过954个赞
知道小有建树答主
回答量:931
采纳率:50%
帮助的人:769万
展开全部
需要新建表然后用存储过程将前十名插入到新表
tTemp(class studentid)

create procedure a as
begin
delcare @strclassname char(50)
delete tTemp清空临时表
declare cc cursor for select distinct classname from ta(你的表)
open cc
fetch next from cc into @strclassname
while(@@FETCHSTATUS=0)
begin
select top 10 classname,studentid from ta where classname=@strclassname order by score desc into tTemp分别查出每个班的前十名插入到临时表
fetch next from cc into @strclassname
end
close cc
deallocate cc
end
以上是存储过程
select * from tTemp
查出所有班的前十名
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浴火fToG7
2010-02-03 · TA获得超过456个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:211万
展开全部
SELECT TOP 10 * FROM 表名 WHERE 条件 ORDER BY 成绩 DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
消渴止咳贴
2010-02-03 · TA获得超过414个赞
知道答主
回答量:84
采纳率:0%
帮助的人:66.2万
展开全部
selet top 10 * from 学生表 order by 成绩 desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式