| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 305 人关注过本帖
标题:各位老师,这段代码错误在哪儿?xx
取消只看楼主 加入收藏
jinanshui
Rank: 2
等 级:论坛游民
帖 子:297
专家分:67
注 册:2009-10-6
结帖率:93.88%
收藏
 问题点数:20 回复次数:1 
各位老师,这段代码错误在哪儿?xx
现有一chengji.dbf表,字段为学号,姓名,语文,数学,英语,物理,化学,生物,历史,地理,政治。学号为字符型主字段前2位为年级,3到4位为班级,5到6位为考号,如何求各各年级的各班级的各学科的前45名(按学科成绩排序)的平均分?
最后结果的形式为
年级   班级   语文,数学,英语,物理,化学,生物,历史,地理,政治.

* 创建临时表用于存储结果
CREATE CURSOR result (年级 C(2), 班级 C(2), 语文 N(6,2), 数学 N(6,2), 外语 N(6,2), 物理 N(6,2), 化学 N(6,2), 生物 N(6,2), 历史 N(6,2), 地理 N(6,2), 政治 N(6,2))
* 定义科目数组
DIMENSION aSubjects[9]
aSubjects[1] = "语文"
aSubjects[2] = "数学"
aSubjects[3] = "外语"
aSubjects[4] = "物理"
aSubjects[5] = "化学"
aSubjects[6] = "生物"
aSubjects[7] = "历史"
aSubjects[8] = "地理"
aSubjects[9] = "政治"
* 获取所有不同的年级和班级组合
SELECT DISTINCT SUBSTR(ALLTRIM(学号), 1, 2) AS 年级, SUBSTR(ALLTRIM(学号), 3, 2) AS 班级 ;
FROM chengji ;
INTO CURSOR crsGradeClass
SCAN
    lcGrade = crsGradeClass.年级
    lcClass = crsGradeClass.班级
    LOCAL ARRAY aAvgScores(9)
    aAvgScores = 0
FOR nSubject = 1 TO 9
    lcSubject = aSubjects[nSubject]
* 对每个科目按成绩排序并取前45名的成绩计算平均值
    SELECT 学号, &lcSubject AS score ;
    FROM chengji ;
    WHERE SUBSTR(ALLTRIM(学号), 1, 4) = lcGrade + lcClass ;
    ORDER BY score DESC ;
    INTO CURSOR temp_scores
    IF RECCOUNT() >= 45
        SELECT AVG(score) FROM (SELECT TOP 45 score FROM temp_scores) INTO ARRAY aAvgScore
    ELSE
        SELECT AVG(score) FROM temp_scores INTO ARRAY aAvgScore
    ENDIF
    aAvgScores[nSubject] = aAvgScore[1]
    USE IN temp_scores
ENDFOR
    INSERT INTO result (年级, 班级, 语文, 数学, 外语, 物理, 化学, 生物, 历史, 地理, 政治) ;
    VALUES (lcGrade, lcClass, aAvgScores[1], aAvgScores[2], aAvgScores[3], aAvgScores[4], aAvgScores[5], aAvgScores[6], aAvgScores[7], aAvgScores[8], aAvgScores[9])
ENDSCAN
* 显示结果
SELECT result
BROWSE
搜索更多相关主题的帖子: SELECT 历史 学号 物理 数学 
前天 09:26
jinanshui
Rank: 2
等 级:论坛游民
帖 子:297
专家分:67
注 册:2009-10-6
收藏
得分:0 
各位老师,这是数据,请试一试
chengji.rar (34.07 KB)
昨天 02:37
快速回复:各位老师,这段代码错误在哪儿?xx
数据加载中...
 
   



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

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