100分求高手给写一个SQL查询语句

ninefive 2004-04-05 03:16:21
数据库:ACCESS
表名:Students
结构:XH(学号),BJ(班级),ZY(专业),YS(院系),NJ(年级),Score(分数),Selected(已答题为1)
数据类型除了Score和Selected为数字类型,其余都为字符型。
--------------------------------------
用一条语句求出所有班级平均分,该班级在该专业同一年级中的排名,该班级在该院系同一年级的排名,该班级在全校同一年级的排名,要求分数相等的班级名次相同,例如排名可以为,1,2,2,2,3,4,5,5,6,7,8……
显示格式为:
班级 专业 院系 年级 平均分 专业排名 院系排名 全校排名

这个问题已经困扰我很久了,希望高手能够给予援助!
在此先表示感谢!
...全文
12 点赞 收藏 40
写回复
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninefive 2004-04-10
此问题没有按照要求得到圆满解决!
但是非常感谢一直关注的兄弟!
回复
ninefive 2004-04-09
这个贴子里的问题让班级按照年级等条件进行排名的问题并没有解决。请教了很多人,自己也想了很多办法,仍没有一个满意的答案。
http://expert.csdn.net/Expert/topic/2931/2931781.xml?temp=.9437677这个贴子的问题受xieyj(Free Fish)的启发,采用ghostzp(风中一头猪)的方法,按照 cjf1009(农民程序员)的思想在大家的帮助下得以解决。但是在这是班级排名的源代码,其余基本一样:
<table>
<tr>
<td colspan="6"><strong><font color="#FF00FF">班    级    排    名</font></strong></td>
</tr>
<tr align="center">
<td width="10%">年级</td>
<td width="10%">班级</td>
<td width="31%">专业</td>
<td width="31%">院系</td>
<td width="10%">平均分</td>
<td width="8%">排名</td>
</tr>
</table>
<%
set rs=server.createobject("adodb.recordset")
sql="select sum(score)/count(bj) as pjf,bj from score where Selected=1 group by bj order by sum(score)/count(bj) desc"
rs.open sql,conn,1,3
score=0
paiming=0
do while not rs.eof
if score<>rs("pjf") then
score=rs("pjf")
paiming=paiming+1
end if
bj=rs("bj")
set rs1=server.createobject("adodb.recordset")
sql1="select * from score where bj='"&bj&"' and Selected=1" '找出全班所有的人數
rs1.open sql1,conn,1,3
%>
<table width="90%" height="2" border="0" align="center">
<tr>
<td></td>
</tr>
</table>
<table>
<tr align="center">
<td width="10%">
<%response.write rs1("nj")%>
</td>
<td width="10%">
<%response.write bj%>
</td>
<td width="31%">
<%response.write rs1("zy")%>
</td>
<td width="31%">
<%response.write rs1("ys")%>
</td>
<td width="10%">
<%response.write FormatNumber(rs("pjf"))%>
</td>
<td width="8%">
<%response.write paiming%>
</td>
</tr>
</table>
<%rs.movenext
loop %>
再次感谢大家!
回复
cjf1009 2004-04-08
顶,希望楼主把你已经实现的代码贴出来,也不枉大家帮你出力了。
回复
阿达King 2004-04-07
你先用关系代数写出来,再转换成可以表达的sql应该是没问题的。
回复
ninefive 2004-04-07
多谢!
回复
ninefive 2004-04-07
UP!
回复
ninefive 2004-04-07
最后一次了
解决不了结贴!
回复
ninefive 2004-04-07
up!
回复
ninefive 2004-04-07
不用一句话
分别求怎么求?
回复
春三十一郎 2004-04-07
学习
回复
ninefive 2004-04-07
1)班级平均分,在全校统一排名
2)专业平均分,在全校统一排名
3)院系平均分,在全校统一排名
上述问题已经解决。
但是本贴问题:
-----------------------------------
求出所有班级平均分,该班级在该专业同一年级中的排名,该班级在该院系同一年级的排名,该班级在全校同一年级的排名,要求分数相等的班级名次相同,例如排名可以为,1,2,2,2,3,4,5,5,6,7,8……
显示格式为:
班级 专业 院系 年级 平均分 专业排名 院系排名 全校排名
------------------------------------
尚未解决。如果大家有时间,看一下吧。
回复
ninefive 2004-04-06
用一条语句我是打算用视图,比较快一些。
现在不限几条语句
能实现就可以
谢谢
后面还有呢
回复
cjf1009 2004-04-06
不建议用一条语句,分开来写思路清晰,速度可能也快些。
回复
全校排名
sql="select avg(score) as avgscore,bj,zy,ys,nj from students group by bj order by avgscore desc"

但是让平均分相同的排名相同比较困难
回复
ninefive 2004-04-06
这些兄弟
小弟在此多谢了!
回复
cjf1009 2004-04-06
sql语句xieyj(Free Fish) 已经写出来了,不过排名,按你说的那种,估计要asp写出来,因为你的库里没有排名字段,显示的时候用循环,赋值记录这个值,然后跟下一个值比较,相同就不变,变了就+1。

本人拙见
回复
zhk168 2004-04-06
先用SQL语句查出所有的,再用VBS计算....这样最简单.
回复
loveweb 2004-04-06
在网上下一个学籍管理系统里面有的
现在没空帮你想
只好让你自己去找了
回复
whyslr 2004-04-06
帮你顶一下啊。
回复
xieyj 2004-04-06
bj:
select sum(score)/count(bj) as test,bj from students group by bj order by sum(score)/count(bj)

zy:
select sum(score)/count(zy) as test,zy from students group by zy order by sum(score)/count(zy)

ys:
select sum(score)/count(ys) as test,ys from students group by ys order by sum(score)/count(ys)
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告