标题:如何对相同id号的记录值进行求和汇总
只看楼主
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
结帖率:100%
已结贴  问题点数:20 回复次数:17 
如何对相同id号的记录值进行求和汇总
如何对相同id号的记录值进行求和汇总,问题是这样的,一个dbf表,里边有两个字段,其中一个字段是"自然数"(字段名),它们中的值有重复;另外一个字段名为:"方法数"。
     我的问题是想把自然数(id值相同的)汇总到一起,即把相同“自然数”对应的“方法数”进行求和运算,合并“自然数”这个字段。
自然数  方法数
10        2
11        3
14        2
15        1
16        2
10        3
14        5
16        3
15        2
.....
.....
大概就这么个表,
形成结果
自然数   方法数
10        5
11        3
14        7
15        3
16        5
即可
里边,自然数种类不定。
现在把所要处理表发上来:
文件有点大,在下载频道有,我变通一下在传上来(取部分数据,只要解决问题就可)
搜索更多相关主题的帖子: 字段 汇总 求和 相同 自然数 
2021-11-29 15:55
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
回复 楼主 独木星空
已把所用到的表传至:下载频道,搜索:自然数,二元运算,整数拆分, 都可搜索到,表名:自然数二元运算结果表。

素数问题的解决是我学习编程永恒的动力。
2021-11-29 16:12
HUXINGKE
Rank: 2
等 级:论坛游民
帖 子:52
专家分:19
注 册:2020-2-27
得分:10 
USE dbf表 EXCL
INDE ON 自然数 TAG X1
TOTAL ON 自然数 TO dbf表1 FIEL 方法数
USE dbf表1
BROW
试试看
收到的鲜花
  • 独木星空2021-11-29 21:04 送鲜花  2朵   附言:有魅力
2021-11-29 16:52
瓜瓜1990
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:125
专家分:699
注 册:2020-2-25
得分:10 
sele 自然数,sum(方法数) as 方法数 from 表名 group by 自然数
收到的鲜花
  • 独木星空2021-11-29 18:39 送鲜花  2朵   附言:很给力

piu~piu~
2021-11-29 17:47
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
回复 4楼 瓜瓜1990
sele 自然数,sum(方法数) as 方法数 from 自然数二元运算结果表 group by 自然数   into dbf d:\自然数相同记录求和
用此语句解决了问题。

素数问题的解决是我学习编程永恒的动力。
2021-11-29 18:39
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
SELECT  1
USE D:\连续整数方程\相同记录数1至4.DBF ALIAS 相同记录1至4
SELECT  2
USE D:\连续整数方程\相同记录数5加6.DBF ALIAS 相同记录56
SELECT  3
USE D:\连续整数方程\自然数二元运算结果表.DBF ALIAS 自然数二元运算
kssj=SECONDS()
 

          SELECT  2
          GO 1
          For j=1 to 4300
          @ 15,22 say j
          A=自然数
          B=相同记录数
              SELECT 3
             INSERT INTO 自然数二元运算 (自然数,方法数) SELECT 自然数+A ,方法数*B FROM 相同记录1至4
          SELECT 2
          SKIP
          ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

素数问题的解决是我学习编程永恒的动力。
2021-11-29 18:49
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
回复 3楼 HUXINGKE
USE d:\连续整数方程\自然数二元运算结果表 EXCL
INDE ON 自然数 TAG X1
TOTAL ON 自然数 TO d:\连续整数方程\自然数相同记录汇总 FIEL 方法数
USE 自然数相同记录汇总
BROW
也实现了最终目的
不知是什么原因,两种方法汇总的结果,记录条数不一样,一个是8622条(本方法),另外一个是8620条记录,正确结果,应该是连续自然数,从21到8640,应该是是8620条记录才正确。除非上边有空记录,或重复记录。

素数问题的解决是我学习编程永恒的动力。
2021-11-29 21:04
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
CLOSE DATA
USE d:\连续整数方程\自然数周期表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF d:\连续整数方程\相同记录数自然数汇总3 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数自然数汇总3
这是单字段的汇总

素数问题的解决是我学习编程永恒的动力。
2021-11-30 07:36
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
SELECT  1
USE D:\连续整数方程\三生素数正1.DBF ALIAS 三生正1
SELECT  2
USE D:\连续整数方程\三生素数正2.DBF ALIAS 三生正2
SELECT  3
USE D:\连续整数方程\三生素数二元运算表.DBF ALIAS 三生二元表
kssj=SECONDS()
 
          SELECT  2
          GO 1
          For j=1 to 1609
          @ 15,22 say j
          B=三中24
         
             SELECT 3
             INSERT INTO 三生二元表 (合成数) SELECT 三中24+B FROM 三生正1
          SELECT  2
          SKIP
          ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是三生素数d24中项的二元运算程序。

素数问题的解决是我学习编程永恒的动力。
2021-12-01 20:26
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
SELECT  1
USE D:\连续整数方程\三生素数二元汇总1简.DBF ALIAS 三生二元
SELECT  2
USE D:\连续整数方程\三生素数d24半.DBF ALIAS 三生半
SELECT  3
USE D:\连续整数方程\三生素数三元运算结果表.DBF ALIAS 三生三元结果
kssj=SECONDS()
 

          SELECT  2
          GO 1
          For j=1 to 943
          @ 15,22 say j
          A=三中24
         
              SELECT 3
             INSERT INTO 三生三元结果 (合成数,方法数) SELECT 合成数+A ,相同记录数 FROM 三生二元
          SELECT 2
          SKIP
          ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是在上楼基础上,做的三生素数d24的中项,三元运算。

素数问题的解决是我学习编程永恒的动力。
2021-12-01 20:27



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




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

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