回 帖 发 新 帖 刷新版面

主题:急!急!请教高手:如何将数据转换成名次

如何将前列的数据转换成结分,在后列里自动输入.

前一列为数据(s),其中有m个数。
[b]要求:[/b]根据每个数,按从大到小排列的名次(n),求出结分(j),自动填入后一列(j)对应的单元格。j只与s的大小和个数m有关。
[b]规则:[/b](1)当s中没有相同值,即无相同的n时   j=(m-n)*2
       (2)当s中有k个相同值,相同值按(1)的公式求出的j各减去(k-1)分,其余不变。
例:(以行代列)
     m=7   (s) 3  5  7  4  6  1  2
           (n) 5  3  1  4  2  7  6
           (j) 4  8  12 6  10 0  2
  
     m=8   (s) 8   4   [color=FF0000]5   5[/color]   3   [color=FF0000]5[/color]   7   [color=FF0000]5[/color]  
     k=4   (n) 1   7   3   3   8   3   2   3     
           (j) 14  2   [color=FF0000]7   7[/color]   0   [color=FF0000]7[/color]   12  [color=FF0000]7[/color]

     m=9   (s) [color=FF00FF]8[/color]   5   [color=00FF00]3[/color]   6   9   [color=00FF00]3[/color]   [color=FF00FF]8   8[/color]   7
     k=2,3 (n) 2   7   8   6   1   8   2   2   5    
           (j) [color=FF00FF]12[/color]  4   [color=00FF00]1[/color]   6   16  [color=00FF00]1[/color]   [color=FF00FF]12  12[/color]  8    [b] 谢谢![/b]

回复列表 (共8个回复)

沙发

用前列建立索引,从第一条记录开始,在后列依次添入相应的数字。

板凳

描述的不够清楚.

3 楼


上百人经过三层小楼
有人知难而退
有人不屑一顾,抿嘴一笑,不能告诉
能解决这个问题的,该去写商业软件了吧,告诉你不就掏我的腰包
急不得!慢慢的看书,慢慢的找资料,可能解决,也可能永远解决不了,
感谢SYWZS和VFP,感谢progamfan.com
也许代码就在面前!

4 楼

http://bbs.pfan.cn/post-306550.html
是否可以参考这贴.

5 楼

select *, RECNO() as 名次 from 表名 order by 排序字  DESC  into cursor lsb read

6 楼


请您再来看看(顶楼),现在是否能讲清楚。谢谢

7 楼

或许楼主已经不会来看了.

SELECT * FROM TAB1

SELECT ID,S,N,M,K,(M-N)*2-(K-1) J FROM (
 SELECT ID,S,(SELECT COUNT(*) FROM TAB1 A WHERE A.ID=B.ID AND A.S>B.S)+1 N,(SELECT COUNT(*) FROM TAB1 A WHERE A.ID=B.ID) M,(SELECT SUM(1) FROM TAB1 A WHERE A.ID=B.ID AND A.S=B.S) K FROM TAB1 B
)A ORDER BY ID


ID   S    
---- ----
1    3
1    5
1    7
1    4
1    6
1    1
2    8
2    4
2    5
2    5
2    3
2    5
2    7
2    5
3    8
3    5
3    3
3    6
3    9
3    3
3    8
3    8
3    7
1    2

(所影响的行数为 24 行)

id   s    n    m    k    j    
---- ---- ---- ---- ---- ---- 
1    3    5    7    1    4
1    5    3    7    1    8
1    7    1    7    1    12
1    4    4    7    1    6
1    6    2    7    1    10
1    1    7    7    1    0
1    2    6    7    1    2
2    8    1    8    1    14
2    4    7    8    1    2
2    5    3    8    4    7
2    5    3    8    4    7
2    3    8    8    1    0
2    5    3    8    4    7
2    7    2    8    1    12
2    5    3    8    4    7
3    8    2    9    3    12
3    5    7    9    1    4
3    7    5    9    1    8
3    8    2    9    3    12
3    8    2    9    3    12
3    3    8    9    2    1
3    6    6    9    1    6
3    9    1    9    1    16
3    3    8    9    2    1

(所影响的行数为 24 行)

8 楼


谢谢Vii
我举的是三个独立例子,数据分别在三个互不关联的列中。
是否可省去id,我去试一试。
抱歉只能打20(满了),我发个新帖,你来就打满分。

我来回复

您尚未登录,请登录后再回复。点此登录或注册