标题:如何按班级层次排序?帮帮忙
只看楼主
ajanlzj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-9-27
结帖率:100%
 问题点数:0 回复次数:3 
如何按班级层次排序?帮帮忙
1-10班一个层次排序,11-58班一个层次排序,要排平均分和三率和。
我现在的代码只能全部排
代码如下:

程序代码:
USE yw                                         &&打开文件
SET ORDER TO 平均分                            &&学科平均分从大到小排列
GO TOP                                         &&定位到第一第
n平均排位 = 1                                  &&平均排位,记号,从1 到 N 不重复
n平均分 = 0                                &&用来存上一条记录的学科平均分,
DO whil !EOF()
IF n平均分 = yw.平均分                 &&判断与上一条的学科平均分是否一样
REPLACE yw.平均排位 WITH yzh_mc                &&如果一样,用上次条记录的平均排位 替换这条记录的平均排位
ELSE
REPLACE yw.平均排位 WITH n平均排位             &&否则 用 '平均排位,记号,从1 到 N 不重复' 来替换
ENDIF
yzh_mc = yw.平均排位                           &&存下这条记录的平均排位,
n平均分 = yw.平均分                    &&和学科平均分 ,用于下条记录的判断
n平均排位 = n平均排位 +1                       &&'平均排位,记号,从1 到 N 不重复' +1
SKIP                                           &&下一条
ENDDO

***************************三率和排名
USE yw &&打开文件
SET ORDER TO  三率和                            &&三率和从大到小排列
GO TOP                                         &&定位到第一第
n三率和排位 = 1                                &&三率和排位,记号,从1 到 N 不重复
n三率和 = 0                                    &&用来存上一条记录的三率和,
DO whil !EOF()
IF n三率和 = yw.三率和                         &&判断与上一条的三率和是否一样
REPLACE yw.三率和排位 WITH yzh_mc              &&如果一样,用上次条记录的三率和排位 替换这条记录的三率和排位
ELSE
REPLACE yw.三率和排位 WITH n三率和排位         &&否则 用 '三率和排位,记号,从1 到 N 不重复' 来替换
ENDIF
yzh_mc = yw.三率和排位                         &&存下这条记录的三率和排位,
n三率和 = yw.三率和                            &&和三率和 ,用于下条记录的判断
n三率和排位 = n三率和排位 +1                   &&'三率和排位,记号,从1 到 N 不重复' +1
SKIP                                           &&下一条
ENDDO
SET ORDER TO  班级                             &&班级从大到小排列
yw.rar (2.33 KB)
搜索更多相关主题的帖子: 平均 不重复 记录 平均分 排序 
2019-11-04 09:49
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
仅以 平均分 1-10班 排序 为例,其余类推。
请试一试,有问题再讨论。
2019-11-04 14:00
ajanlzj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-9-27
得分:0 
回复 2楼 schtg
统计11-58班的平均分排位时,按要求是总共48个班,也要列出1-48位。
代码:update yw set 平均排位 =(select COUNT(a.班级)+1 from yw as a where a.平均分>yw.平均分) where BETWEEN(ALLTRIM(班级),"C111","C158")
出现了49-58位,把1-10班也统计进去了。

2019-11-04 15:12
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 3楼 ajanlzj
请你试一试这句,添加一个附加条件,应该可以办到的。
UPDATE yw SET 平均排位=(select COUNT(a.班级)+1 from yw as a WHERE BETWEEN(ALLTRIM(班级),"C111","C158") AND a.平均分>yw.平均分) WHERE BETWEEN(ALLTRIM(班级),"C111","C158")
2019-11-05 07:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497606-1-1.html




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

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