按照得分排序

hch686 2005-10-08 09:53:10
公司 分数 排名
6201 33
6202 23
6203 43
6204 63
6205 52

按照得分计算出各个公司的排名,然后,按照原来的顺序,在后面标注各个公司的排名
求教,谢谢!
...全文
136 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch686 2005-10-10
  • 打赏
  • 举报
回复
在线等待中
hch686 2005-10-10
  • 打赏
  • 举报
回复
问题解决,贴上代码,效率不高,欢迎讨论,讨论2日后结贴,谢谢大家
---------------------------------------------------------
<%
'---------------------------------计算排名
sub count_order()
dim myorder(20)
'--------------------------------------查询计算
sql3 ="select * from tmp order by mark desc " '//按照分数大小查询临时表得出排名的数组
set rs3=server.createobject("adodb.recordset")
rs3.open sql3,conn_tmp,3,3
aResults = rs3.GetRows '//取得数据集
iRows = UBound(aResults, 2) '//记录数
icols = UBound(aResults, 1) '//字段数
%>
<%
dim L
L=1
for m=0 to iRows-1
myorder(m)=L
'response.write aResults(2,m)&"<br>"&"fdfdsf"
If clng(aResults(2,m))-clng(aResults(2,m+1))<>0 then L=L+1 end if
next
rs3.close
set rs3=nothing
'--------------------------------------插入
sql4 ="select * from tmp order by mark desc " '//按照分数大小查询临时表将排名插入临时表
set rs4=server.createobject("adodb.recordset")
rs4.open sql4,conn_tmp,3,3
n=0
while not rs4.eof
rs4("order")=myorder(n)
rs4.movenext
n=n+1
wend
rs4.close
set rs4=nothing
end sub
%>
hch889 2005-10-10
  • 打赏
  • 举报
回复
换个马甲顶一下
hch686 2005-10-09
  • 打赏
  • 举报
回复
忙的一塌糊涂,都没有空试,试试先,性能应该不怕的2g的内存应该可以应付的,呵呵
我的这些数据都是经过上千次查询,查询了几百个表出来的,哈哈
friendlyFour 2005-10-09
  • 打赏
  • 举报
回复
那就用上边说得用临时表,将数据内容全都汇总到临时表中再做排名。
hch686 2005-10-09
  • 打赏
  • 举报
回复
代码如下:
'-----------------------------------------------------------------------
'将公司、得分、排名存入临时表
set conn_tmp = Server.CreateObject("ADODB.Connection")
DB="../code.mdb"
str="DBQ="+server.mappath(DB)+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn_tmp.Open str
sqlstr="select * from tmp order by id asc"
set rs=server.createobject("adodb.recordset")
rs.open sqlstr,conn_tmp,3,3
i=0
while not rs.eof
rs("mark")=mark2(i)
'response.write rs("mark")
rs.movenext
i=i+1
wend

'计算排名
sql1="select * from tmp order by mark asc"
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn_tmp,3,3
j=1
while not rs1.eof
'response.write "公司:"&rs1("company")&" 分数:"&rs1("mark")&"<br>"
rs1("order")=j
rs1.movenext
j=j+1
wend
'从临时表中查询排名
sql2="select * from tmp order by id asc"
set rs2=server.createobject("adodb.recordset")
rs2.open sql2,conn_tmp,3,3
k=0
while not rs2.eof
'response.write "公司:"&rs2("company")&" 分数:"&rs2("mark")&" 排名:"&rs2("order")&"<br>"
order(k)=rs2("order")
rs2.movenext
k=k+1
wend
rs.close
set rs=nothing
rs1.close
set rs1=nothing
rs2.close
set rs2=nothing
conn_tmp.close
set conn_tmp=nothing
'-----------------------------------------------------------------
结果如下:
公司:6201 分数:100 排名:13
公司:6202 分数:99.9 排名:15
公司:6203 分数:100 排名:12
公司:6204 分数:100 排名:11
公司:6205 分数:43 排名:14
公司:6221 分数:100 排名:10
公司:6222 分数:100 排名:9
公司:6223 分数:100 排名:8
公司:6224 分数:100 排名:7
公司:6226 分数:100 排名:6
公司:6227 分数:100 排名:5
公司:6228 分数:100 排名:4
公司:6229 分数:100 排名:3
公司:6230 分数:100 排名:2
公司:6215 分数:100 排名:1
------------------------------------------------------
问题如下:
1、为什么排名不是完全正确的?如6205和6202
2、如果分数相同,该如何判定并列名次?
itzhiren 2005-10-08
  • 打赏
  • 举报
回复
select 分数,公司 from table order by 分数 desc
for i=1 to rs.recordcunt
update table set 排名="&i&" where 公司='"&trim(rs("公司"))&"'
next
jspadmin 2005-10-08
  • 打赏
  • 举报
回复
我的笨办法:select * from table order by 分数 desc ,然后将结果写入数组,再从数组中按公司取出显示。要不,更简单点,就是建立个临时表,按分数读取所有记录后,写入临时表,并加上字段排名,然后再按公司读取,就ok了,不过,这样就需要打开数据库两次,如果数据量大,性能受到影响
ybfqlyq 2005-10-08
  • 打赏
  • 举报
回复
select GONGSI,FENSHU from table order by GONGSI desc
<%for i=1 to rs.recordcunt
response.write "gongsi,fenshu,paiming"&"<br>"
response.write gongsi&" "&fenshu&" &i&"<br>"
%>
hch686 2005-10-08
  • 打赏
  • 举报
回复
对的,就是楼上说的
而且上面的数据内容全都不在数据表中,都是很零散的
friendlyFour 2005-10-08
  • 打赏
  • 举报
回复
公司 分数 排名
6201 33 4名
6202 23 5名
6203 43 3名
6204 63 1名
6205 52 2名
你是想这样吗?
hch686 2005-10-08
  • 打赏
  • 举报
回复
大家理解错意思了
hch686 2005-10-08
  • 打赏
  • 举报
回复
有个问题,我这些数据都是计算出来的结果,经过千次以上查询运算出来的
所以相关数据全不是在数据表中的

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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