Office中国论坛/Access中国论坛

标题: [求助]关于同一ID不同长度鱼数量求和 [打印本页]

作者: SMajor    时间: 2006-8-13 17:28
标题: [求助]关于同一ID不同长度鱼数量求和
各位大虾,我刚接触Access不久,现在做一篇鱼统计的论文,涉及到要求若干次捕捞的鱼每次网捞的总数量。而我的数据是已知每次捕捞ID一样,但相同ID下有不同长度的鱼,以及该长度的鱼的数量。

已知的数据有:

ID,从1982年到2003年的捕捞,每次捕捞对应不同的ID,全部不重复。

Length,鱼长度,一般从12到40不等

Frequency,鱼的数量

经纬度和日期,以及一些参数,相同ID对应这些参数都一致。

现在我有两个目的:

1. 求每个ID下的鱼总数量。

2. 求每个ID下相应几个长度鱼的总数量,应该用什么公式或者步骤。

因为数据量太多了,手动求和会花费大量的精力和时间的,希望大家能给我一些建议和指示,我在次谢谢大家了。[attach]19720[/attach]
附图一张,便于大家分析。

[此贴子已经被作者于2006-8-13 21:11:36编辑过]


作者: andymark    时间: 2006-8-13 18:17
分组汇总应该可以
作者: SMajor    时间: 2006-8-13 18:28
具体怎么操作呢?麻烦赐教,谢谢。
作者: andymark    时间: 2006-8-13 18:29
把例子简化传上来
作者: SMajor    时间: 2006-8-14 03:15
这是例子,选取了1982年8月的四、五日的捕捞数据。如果不够,我再多选取一些,在此谢谢了。

[attach]19730[/attach]

作者: SMajor    时间: 2006-8-14 03:59
对了,在duration那一栏大部分是1,对应的是一小时的捕获数量,而有的不是1,请问怎么样能统一成一?也就是不是1的那些捕获数量能批处理换算成一小时的量。
作者: andymark    时间: 2006-8-14 04:17
看不到你的表有Number字段,从何统计[em06]


作者: SMajor    时间: 2006-8-14 05:09
很抱歉,number就是frequency,也就是鱼的数量。

[此贴子已经被作者于2006-8-13 21:12:59编辑过]


作者: andymark    时间: 2006-8-14 05:22
是要这种结果吗[attach]19733[/attach]

作者: SMajor    时间: 2006-8-14 05:32
对的,这是求出了同一ID的frequency的总数,谢谢版主。

另外如果我要求几个特定长度比如12到20的鱼的frequency又怎么求?

以及怎么把duration不等于1的frequency换算成等于1的?谢谢版主了。磕头~
作者: andymark    时间: 2006-8-14 05:36
以下是引用SMajor在2006-8-13 21:32:00的发言:


另外如果我要求几个特定长度比如12到20的鱼的frequency又怎么求?

    这几个是汇总在一起还是分别求和
作者: SMajor    时间: 2006-8-14 05:37
求12到20长度的鱼是不是除了ID用Group by以外,再lengthGroup by或者>=12 and <=20一下呢?谢谢。
作者: andymark    时间: 2006-8-14 05:44
[attach]19734[/attach]

作者: SMajor    时间: 2006-8-14 05:54
谢谢版主,最后一个,也就是最难的问题,怎么样能统一它们的duration呢,因为有的duration是不同的,代表的意思是几小时的捕获量,一般是1小时,比如duration为1,frequency为2,代表一小时捕获了2条;那么duration为0.5时,frequency为2,则要转换一下,代表一小时应该捕获4条,依此类推。希望版主给予我最后的解答,万分感激。

我把新的例子给你,这是其中一个,还有其他duration为0.5、0.98等的,是不是要分开进行转换呢?[attach]19735[/attach]


[此贴子已经被作者于2006-8-13 21:59:50编辑过]


作者: andymark    时间: 2006-8-14 06:09
UPDATE [duration not 1] SET duration = 1, frequency = frequency*(1/duration)
WHERE duration<1;

作者: SMajor    时间: 2006-8-14 06:14
以下是引用andymark在2006-8-13 22:09:00的发言:
UPDATE [duration not 1] SET duration = 1, frequency = frequency*(1/duration)
WHERE duration<1;

惭愧,不知道update所指哪里,且还有duration>1的情况也是要另外算吗。
作者: andymark    时间: 2006-8-14 06:19
更新查询呀

[attach]19736[/attach]

作者: SMajor    时间: 2006-8-14 06:36
版主,能不能具体一点,我不是很会用Access,我先新建了一个表命名为duration not 1,然后新建一个查询,但我不知道你的“UPDATE [duration not 1] SET duration = 1, frequency = frequency*(1/duration)
WHERE duration<1;”是添加在哪里的?添加完了就运行为更新查询对不对。

作者: andymark    时间: 2006-8-14 06:44
17楼已经上传例子了
作者: SMajor    时间: 2006-8-14 06:54
但是我再输入以后运行时会弹出一个对话框,要我输入参数值[attach]19737[/attach]我应该输入多少呢?

作者: SMajor    时间: 2006-8-14 06:58
我知道了,是不是因为我是批量加入的,有的duration是0.5,而有的是0.78,不一定都是一样的,所以要我输入参数?如果这样,是不是意味着我要手动分开,一个表一个表来算呢?
作者: andymark    时间: 2006-8-14 07:03
在17的例子全部转化1,以1为标准了

具体根据实际情况,自已修改吧
作者: SMajor    时间: 2006-8-14 07:07
谢谢版主了,我找到问题的所在了,是因为frequency那一栏的名称不同,所以要输入参数,我改了名称了就对了。现在就没什么大问题了,除了要把新的frequency四舍五入外,我只要把新的表和以前duration=1的表整合在一起就可以了。谢谢版主。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3