You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access中SQL统计时Count函数返回错误计数结果的问题排查

问题原因

  • 两表INNER JOIN后会生成笛卡尔积扩展行数:1个样地对应多棵树木,关联结果集中同一个T_Plots.ID_plot会重复出现,重复次数等于该样地内的树木总棵数。
  • COUNT()函数默认统计所有非空值的行数,不会自动去重,因此你写的Count(T_Plots.ID_plot)实际统计的是对应林分类型下的总树木行数,和Count(T_Trees.ID_Tree)结果自然完全一致,远高于实际样地数量。

解决方法

统计样地数量时添加DISTINCT关键字对样地ID去重,同一个样地无论对应多少棵树仅计数1次,修改后语句如下:

SELECT
T_Plots.Forest_type,
Count(DISTINCT T_Plots.ID_plot) AS [Plots/Forest Type],
Count(T_Trees.ID_Tree) AS [Trees/Forest Type],
[Trees/Forest Type]/[Plots/Forest Type]*10 AS [Trees/Ha],
Avg([T_Trees.DBH (cm)])/100*Avg([T_Trees.Height (m)])*0.7*[Trees/Ha] AS [Volume (m3)/Ha],
3.142*(((Avg([T_Trees.DBH (cm)])/2)^2)/100)*[Trees/Ha] AS [BA (m2)/Ha]

FROM T_Plots INNER JOIN T_Trees
ON T_Plots.ID_plot = T_Trees.ID_plot

GROUP BY T_Plots.Forest_type

如果你的数据库不支持COUNT(DISTINCT)语法,也可以先单独统计每个林分类型的样地数量,再和树木统计结果做关联计算。


内容的提问来源于stack exchange,提问作者FlightlessDutchman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:27:02