| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2573 人关注过本帖
标题:关于处理考试成绩数据问题,急求!
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 58楼 lygcw9603
看了看,01班排的不对
2012-09-18 16:35
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用lijihe8866在2012-9-16 19:46:17的发言:

经过一下午的仔细研究,就像BCCN201203楼主所说,可以用一行代码完全可以实现年级的排名,班级的排名,先与大家分享一下:
UPDATE ee SET 班级名次=(select COUNT(a.学号)+1 from ee as a WHERE a.总分>ee.总分 AND a.班级 =ee.班级)
UPDATE ee SET 年级名次=(select COUNT(a.学号)+1 from ee as a WHERE a.总分>ee.总分)
经大量数据测试,完全满足要求,同时谢谢楼主的指导
厉害哦。
2012-09-18 16:36
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
以下是引用tlliqi在2012-9-18 16:35:48的发言:

看了看,01班排的不对
谢谢你的仔细,那个地方不对,请贴上图便于改正错误。
2012-09-18 17:01
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 63楼 lygcw9603
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-09-18 18:27
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
回复 64楼 tlliqi
贴上你用的代码[是我的代码生成的吗]
58楼的代码能生成你贴的图吗?
我的代码中也找不到X,X1字段吧?
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 lygcw9603 于 2012-9-18 18:48 编辑 ]
2012-09-18 18:39
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
ee.rar (1010 Bytes)
图片附件: 游客没有浏览图片的权限,请 登录注册
测试总结了一下各高手语句,留个脚印学习了,
程序代码:
CLEAR
SELECT ee
BLANK FIELDS 年级名次,班级名次 ALL &&清空原有名次&&显示测试用
*方法1
**年级名次
INDEX ON -总分 TO px
GO TOP &&scan语句可以不用,do while 语句需要
nmc=1
nrs=1
nzf=-1 && nzf=zf也可以
SCAN
    IF 总分!=nzf
        nmc=nrs
    ENDIF
    REPLACE 年级名次 WITH nmc
    nrs=nrs+1
    nzf=总分
ENDSCAN
CLOSE INDEXES &&关闭索引
ERASE px.idx&&删除上面所建立索引 
SELECT * FROM ee ORDER BY 总分 DESC &&显示测试用
**班级名次
SELECT ee
INDEX ON VAL(班级)*10000+1-总分 TAG bjzf
nmc=1
nrs=1
nzf=-1
cbj=" "
SCAN
    IF ALLTRIM(班级)!=cbj
        nmc=1
        nrs=1
    ELSE
        IF 总分!=nzf
            nmc=nrs
        ENDIF
    ENDIF
    REPLACE 班级名次 WITH nmc
    nrs=nrs+1
    nzf=总分
    cbj=ALLTRIM(班级)
ENDSCAN
CLOSE INDEXES &&关闭索引
DELETE TAG ALL &&删除复合索引
SELECT * ORDER BY 班级,总分 DESC FROM ee&&&测试用

*方法2,一句sele 
UPDATE ee SET 年级名次=(SELE COUN(*)+1 FROM ee AS a WHERE a.总分>ee.总分 ) &&年级名次
UPDATE ee SET 班级名次=(SELE COUN(*)+1 FROM ee AS a WHERE a.总分>ee.总分 AND a.班级=ee.班级) &&班级名次
SELECT * ORDER BY 班级,总分 DESC FROM ee&&&测试用



[此贴子已经被作者于2024-12-2 16:29编辑过]

2024-12-02 16:15
快速回复:关于处理考试成绩数据问题,急求!
数据加载中...
 
   



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

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