| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1488 人关注过本帖, 2 人收藏
标题:VFP排列名次
只看楼主 加入收藏
caocj_1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-5-10
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:15 
VFP排列名次
VFP排列名次:
1.相同分数占名次(12245668……)?
2.相同分数不占名次(122345667……)?
2013-05-10 14:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用caocj_1在2013-5-10 14:24:38的发言:

VFP排列名次:
1.相同分数占名次(12245668……)?
2.相同分数不占名次(122345667……)?
什么叫占名次?
什么叫不占名次?
上传数据表

坚守VFP最后的阵地
2013-05-10 14:26
dengxsh
Rank: 2
等 级:论坛游民
帖 子:87
专家分:40
注 册:2013-2-26
收藏
得分:20 
1.相同分数占名次(12245668……)prg程序代码:
USE 成绩排名表
INDEX on -总分 TO 临时表LSB                         &&总分从大到小排列
GO TOP                                              &&定位到第一行
n名次 = 1                                           &&名次,记号,从1 到 N 不重复
n总分 = 0                                           &&用来存上一条记录的总分
DO whil !EOF()
        IF n总分 = 成绩排名表.总分                      &&判断与上一条的总分是否一样
            REPLACE 成绩排名表.排名1 WITH 临时字段LSZD  &&如果一样,用上次记录名次替换
        ELSE
            REPLACE 成绩排名表.排名1 WITH n名次         &&否则,用不重复新名次
        ENDIF
        临时字段LSZD = 成绩排名表.排名1                 &&存下这条记录的名次
        n总分 = 成绩排名表.总分                         &&用于下条记录的判断
        n名次 = n名次 +1                                &&'名次(记号),从1到N不重复'+1
        SKIP                                            &&下一条
ENDDO

2.相同分数不占名次(122345667……)prg程序代码:
 close all
use 成绩排名表
index on -总分 to 临时表2
go top
n=1
f=总分
do while !eof()
  if 总分!=f
    f=总分
    n=n+1
  endif
  replace 排名2 with n
  skip
enddo
set index to
erase 临时表2
brow
return
收到的鲜花
  • tlliqi2013-05-10 14:32 送鲜花  10朵   附言:看来可以
2013-05-10 14:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
答非所问

坚守VFP最后的阵地
2013-05-10 14:29
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 3楼 dengxsh
看来可以
2013-05-10 14:32
caocj_1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-5-10
收藏
得分:0 
谢谢3楼,问题已经解决!
2013-05-10 14:32
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用caocj_1在2013-5-10 14:24:38的发言:

VFP排列名次:
1.相同分数占名次(12245668……)?
2.相同分数不占名次(122345667……)?
其实是同分同名次
2013-05-10 14:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用tlliqi在2013-5-10 14:34:14的发言:

其实是同分同名次
如果是这样,1到2行代码就解决问题了

坚守VFP最后的阵地
2013-05-10 14:36
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用sdta在2013-5-10 14:36:49的发言:

如果是这样,1到2行代码就解决问题了
你是说他问的不是这样的
2013-05-10 14:43
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
VFP9。0

*相同分数不占名次(122345667……)
SELECT 总分,RECNO() 排名 FROM (SELECT DISTINCT 总分 FROM 成绩排名表 ORDER BY 总分 DESC) A INTO CURSOR T1
UPDATE 成绩排名表 SET 排名=T1.排名 FROM T1 WHERE 成绩排名表.总分=T1.总分

*相同分数占名次(12245668……)
UPDATE 成绩排名表 SET 排名=(SELECT COUNT(*)+1 FROM 成绩排名表 B WHERE 成绩排名表.总分<B.总分)


[ 本帖最后由 kiff 于 2013-5-10 16:27 编辑 ]
收到的鲜花
  • tlliqi2013-05-10 16:17 送鲜花  10朵   附言:实用
  • taifu9452013-05-10 16:44 送鲜花  10朵   附言:第二个问题的解决方案用了嵌套子查询,很精 ...
2013-05-10 15:43
快速回复:VFP排列名次
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028134 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved