标题:求字段中的最大值、最小值、不重复值个数等
只看楼主
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
结帖率:100%
已结贴  问题点数:90 回复次数:22 
求字段中的最大值、最小值、不重复值个数等
各位老师好!
发过去二个表,n1n5,zdz.
求:当表n1n5中的n1字段值=80时,求n5字段的最大值、最小值、有多少个值、有多少个不重复的值;   
    当表n1n5中的n1字段值=81时,求n5字段的最大值、最小值、有多少个值、有多少个不重复的值;
    当表n1n5中的n1字段值=82时,求n5字段的最大值、最小值、有多少个值、有多少个不重复的值;
    ........
    当表n1n5中的n1字段值=188时,求n5字段的最大值、最小值、有多少个值、有多少个不重复的值。
    将这些值放到表zdz的s80,s81,s82.....s188字段。
    表zdz已有4条记录,是手动统计录入的,没有不重复值的记录。
    将表n1n5中的qihao,h1,h2,n3最后一行带入表zdz的qihao,h1,h2,h3。
    将表n1n5表名带入zdz的zd字段。
    s80,s81,s82......s188字段为字符型,数值型不能间隔,不易区分。
   
四个截图的说明:
    n1n580,是表n1n5中字段n1=80时的截图,在表zdz中s80字段记    0
    n1n582,是表n1n5中字段n1=82时的截图,在表zdz中s82字段记    97   1
    n1n5178,是表n1n5中字段n1=178时的截图,在表zdz中s178字段记 152 178 2 2
    n1n5106,是表n1n5中字段n1=106时的截图,在表zdz中s106字段记 100 136 24 19

下面是我把11月28日吹水佬老师写的程序里的值排列下来,连续执行,一次完成。提供给各位老师。

SELECT RECNO() 记录号,* FROM n1n5 INTO CURSOR tmp
SELECT a.记录号,a.n1,b.记录号,b.n5 FROM tmp a JOIN tmp b ON a.n1==80 AND a.记录号==b.记录号-1

SELECT RECNO() 记录号,* FROM n1n5 INTO CURSOR tmp
SELECT a.记录号,a.n1,b.记录号,b.n5 FROM tmp a JOIN tmp b ON a.n1==81 AND a.记录号==b.记录号-1

SELECT RECNO() 记录号,* FROM n1n5 INTO CURSOR tmp
SELECT a.记录号,a.n1,b.记录号,b.n5 FROM tmp a JOIN tmp b ON a.n1==82 AND a.记录号==b.记录号-1

.........

SELECT RECNO() 记录号,* FROM n1n5 INTO CURSOR tmp
SELECT a.记录号,a.n1,b.记录号,b.n5 FROM tmp a JOIN tmp b ON a.n1==188 AND a.记录号==b.记录号-1




n1n5.zip (27.2 KB)

zdz.zip (2.62 KB)

n1n580.zip (4.21 KB)

n1n582.zip (5.38 KB)

n1n5106.zip (20.5 KB)

n1n5178.zip (6.98 KB)
搜索更多相关主题的帖子: FROM 多少 tmp 字段 记录 
2021-12-14 11:43
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
太复杂了,你还是转化到EXCEL中去弄弄,到是很简单的。
2021-12-14 13:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
是按n1字段值分类统计吧
2021-12-14 15:16
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 3楼 吹水佬
吹水佬老师,是。
2021-12-14 15:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
不知有无理解错



[此贴子已经被作者于2021-12-14 22:00编辑过]

2021-12-14 21:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:90 
程序代码:
dbfFile = "n1n5"
USE (dbfFile )
GO BOTTOM 
SCATTER FIELDS qihao,h1,h2,h3 TO arr
SELECT n1,n5,COUNT(*) cnt  FROM n1n5 WHERE BETWEEN(n1,80,188) GROUP BY n1,n5 INTO CURSOR t1
SELECT *, "      " zd,000000 最大值,000000 最小值,000000 多少个值,000000 多少个不重复 FROM n1n5 WHERE .F. INTO CURSOR t2 READWRITE 
SELECT t2
INDEX on n1 TAG n1
SELECT t1
SET RELATION TO n1 INTO "t2"
SCAN
    IF !FOUND("t2")
        INSERT INTO t2 (n1,最小值,最大值) VALUES (t1.n1,t1.n5,t1.n5)
    ENDIF
    IF t1.n5 > t2.最大值
        REPLACE t2.最大值 WITH t1.n5
    ELSE
        IF t1.n5 < t2.最小值
            REPLACE t2.最小值 WITH t1.n5
        ENDIF               
    ENDIF 
    REPLACE t2.多少个值 WITH t2.多少个值 +  &&累计
    IF ==1
        REPLACE t2.多少个不重复 WITH t2.多少个不重复 + 1
    ENDIF
ENDSCAN
SELECT t2
REPLACE ALL qihao WITH arr[1],h1 WITH arr[2],h2 WITH arr[3],h3 WITH arr[4],zd WITH dbfFile 
SELECT * FROM t2


[此贴子已经被作者于2021-12-14 22:18编辑过]

2021-12-14 22:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
程序代码:
dbfFile = "n1n5"
USE (dbfFile )
GO BOTTOM 
SCATTER FIELDS qihao,h1,h2,h3 TO arr
SELECT n1,n5,COUNT(*) cnt FROM n1n5 WHERE BETWEEN(n1,80,188) GROUP BY n1,n5 INTO CURSOR t1
SELECT 0000000 qihao, 0 h1, 0 h2, 0 h3, n1,;
        "      " zd,;
        MAX(n5) 最大值,;
        MIN(n5) 最小值,;
        SUM(cnt) 多少个值,;
        SUM(IIF(cnt==1,1,0)) 多少个不重复;
    FROM t1;
    GROUP BY n1;
    INTO CURSOR t2 READWRITE 
SELECT t2
REPLACE ALL qihao WITH arr[1],h1 WITH arr[2],h2 WITH arr[3],h3 WITH arr[4],zd WITH dbfFile 
SELECT * FROM t2
2021-12-15 11:35
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 6楼 吹水佬
吹水佬老师,你好!
非常感谢你的帮助。
抱歉,我把要求搞错了。准确的要求是:当表n1n5中的n1字段值=80时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;   
                                    当表n1n5中的n1字段值=81时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;
                                    当表n1n5中的n1字段值=82时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;
                                    ........
                                    当表n1n5中的n1字段值=188时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值。
                                    将这些值放到表zdz的s80,s81,s82.....s188字段。
你11月28日写的程序,就是n5下一行数据。
恳请老师再帮助改一下。谢谢。
另外,请老师把运行结果形成自由表。
2021-12-15 13:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 8楼 yd1954
有点不明
例如:
n1  n5
80  11
85  22
90  33
80  44
90  55
80  66
95  22
80  88
是不是这意思:
每当n1=80时,下一行的n5有:22、55、22
最大值55、最小值22、有3个值、有1个不重复的值
2021-12-15 14:45
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 9楼 吹水佬
吹水佬老师,你好!
我用你11月28日的程序得出下列:
n1=80时  n1,n5均为0,就是说,在表中n1没有=80的;
n1=81    n1n5同上
n1=82    n5的下一行=97
n1=83    同n1=80
n1=84    n5的下一行=98
n1=85    同n1=80
n1=86    n5的下一行=95
n1=87    得0
n1=88    得0
n1=89    n5的下一行 83、90、92、111 最大数111,最小数83,多少值4,不重复值4  
n1=90    得0
n1=91    n5的下一行 101、102、103、105、108  最大数108,最小数101,多少值5,不重复值5

n1=91的具体说明     表中1202行n1=91,1203行n5=101
                    表中2451行n1=91,2452行n5=105
                    表中3151行n1=91,3152行n5=102
                    表中4540行n1=91,4541行n5=108
                    表中4542行n1=91,4543行n5=103

不知是否说明白了。
再次感谢老师的帮助。

2021-12-15 15:52



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




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

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