标题:求字段中的最大值、最小值、不重复值个数等
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 10楼 yd1954
分析问题尽量简化
说说9楼的数据,每当n1=80时最终所要的结果:最大值、最小值、有多少个值、有多少个不重复的值


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

2021-12-15 18:02
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 11楼 吹水佬
当n1=80时,用下面的程序统计
USE n1n5 IN 0 ALIAS a
USE n1n5 IN 0 ALIAS b AGAIN
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
记录为空,说明n1字段中没有=80的,因此,n5也为空,记为0
2021-12-15 19:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 12楼 yd1954
之前贴的问题不是一回事
暂时不去解决实际问题
先搞明你的思路,先按照你的思路直接回答我的问题,我才好知道你在想什么。否则,我就没法想下去。
2021-12-15 19:36
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 13楼 吹水佬
吹水佬老师,你好!
我的思路是:当表n1n5中的n1字段值=80时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;   
            当表n1n5中的n1字段值=81时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;
            当表n1n5中的n1字段值=82时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值;
            ........
            当表n1n5中的n1字段值=188时,求n5字段下一行的最大值、最小值、有多少个值、有多少个不重复的值。

老师11月28日的程序已经解决上述“下一行”的问题,只是n1的每个值的最大值、最小值、有多少个值、有多少个不重复的值
都要手动统计,才有了现在的想法。
11月28日的程序:
USE n1n5 IN 0 ALIAS a
USE n1n5 IN 0 ALIAS b AGAIN
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

这就是我的思路,不知是否说明白了。
2021-12-15 19:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
我9楼给出一组n1n5数据,你算不出当n1=80时所要的结果(最大值、最小值、有多少个值、有多少个不重复的值)吗?
算得出就算给我看看。
算不出就不用说下去了,我真无法理解你在想什么。
或者说说算不出的原因。
2021-12-15 20:13
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 15楼 吹水佬
回复 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 20:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 16楼 yd1954
这样讨论就好,你问我答,我问你答,双方就会想到一块。
还是用n1=80来说,按照之前的贴上下行数据的处理方法,将n1=80的n5换成下一行的n5
结果:
n1  n5
80  22
85  22
90  33
80  55
90  55
80  22
95  22
80  88
这样就可能用6、7楼的方法得出结果


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

2021-12-16 10:24
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 17楼 吹水佬
老师好!
我太笨了,几个小时也没找到“n1=80的n5”,也不会“换成下一行的n5”。
还请老师帮助指点。
2021-12-16 15:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 18楼 yd1954
不笨,只是没认真看回复
n1=80 只是例如,是假设,不是真实数据
可改为n1=82、n1=89、n1=98.........
作为讨论用一个数来分析就可以了,其他所有的n1同理
还有:
n1  n5
80  11
80  22
80  33
98  44
这种情况的n1=80的下一行n5是不是:22、33、44
2021-12-16 16:03
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 19楼 吹水佬
老师好!
我认真看了17楼回复,再次看了6楼的代码。
我想找到能代表“n1=80的n5”句子,我觉得应该在这两句:

SELECT n1,n5,COUNT(*) cnt  FROM n1n5 WHERE BETWEEN(n1,80,188) GROUP BY n1,n5-1 INTO CURSOR t1
SELECT *, "      " zd,000000 最大值,000000 最小值,000000 多少个值,000000 多少个不重复 FROM n1n5 WHERE .F. INTO CURSOR t2 READWRITE

但我不知在什么位置改“下一行的n5”,也不知道“下一行的n5”代码怎么写。

下面scan
.......
endscan   是具体计算。

请老师指教。
2021-12-16 20:11



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




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

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