9个字段(A1-A9),每个字段记录按照年月日存放,SQL语句如何实现选取特定条件的数据后,求A1-A9的平均?

我来看看CB 2008-10-20 09:21:51
9个字段(A1-A9),每个字段记录按照年月日存放,SQL语句如何实现选取特定条件的数据后,求A1-A9的平均?
我用的是选取特定条件后得到的字段B1-B9,用(B1+B2+B3+...+B9)/9来计算。一般情况下很好用,但是如果选出来的某个记录没有数据,用(B1+B2+B3+...+B9)/9来计算平均就无效了。
也不知道说明白没有。比如数据库如下:
年 月 日 A1 A2.....A9
1989 1 1 23 25.....19
1989 1 2 33 15.....29
1989 1 3 13 35.....39
.....................
1990 1 1 33 25.....49

我计算A1,A2,A3 字段 每年的和,SQL语句:
SELECT YEAR,SUM(A1) AS A1,SUM(A2) AS A2,SUM(A3) AS A3,(SUM(A1)+SUM(A2)+SUM(A3))/3 AS 平均 FROM SY.DB WHERE (YEAR>='1989' AND CYEA<='1990') GROUP BY YEAR

一般都得到
年 A1 A2 A3 平均。

如果1989年A1没有数据,则1989年3个字段的平均就求不出来了。这个该如何解决?

SQL中的AVRAGE只是对记录有用。

...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
我来看看CB 2008-10-25
  • 打赏
  • 举报
回复
继续、。。。。
我来看看CB 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yuanreid 的回复:]
这个SQL估计要写的比较麻烦,用count只能count列上的数量,而无法count一个记录中的数量
[/Quote]
是啊。不知道DBGrid控件的自动计算的字段管用不?
都没有横向的统计,SQL只能纵向的。
yuanreid 2008-10-22
  • 打赏
  • 举报
回复
这个SQL估计要写的比较麻烦,用count只能count列上的数量,而无法count一个记录中的数量
yeah920 2008-10-22
  • 打赏
  • 举报
回复
帮忙顶起来,等高手。
我来看看CB 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yuanreid 的回复:]

将表select into到一个新表,将所有的空值变成0,再出报表呢。
[/Quote]

这里面的关键就是,如果A1没有数据,求平均的时候就得排除,应该是(A2+A3)/2才对。

不管怎么说,还是谢谢大家,希望继续。
我来看看CB 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 unsigned 的回复:]
SELECT YEAR,SUM(isnull(A1,0)) AS A1,SUM(isnull(A2,0)) AS A2,SUM(isnull(A3,0)) AS A3,SUM(isnull(A1,0)+isnull(A2,0)+isnull(A3,0))/3 AS 平均 FROM SY.DB WHERE (YEAR>='1989' AND CYEA <='1990') GROUP BY YEAR
[/Quote]

这个很好。
有一个问题:如果A1没有数据,求平均的时候就得排除,那样除以3就不合适了。
痞子酷 2008-10-21
  • 打赏
  • 举报
回复
呵呵,不错!!!
fangsp 2008-10-21
  • 打赏
  • 举报
回复
向僵哥敬礼
敬礼!!!!!
僵哥 2008-10-20
  • 打赏
  • 举报
回复
SELECT YEAR,SUM(isnull(A1,0)) AS A1,SUM(isnull(A2,0)) AS A2,SUM(isnull(A3,0)) AS A3,SUM(isnull(A1,0)+isnull(A2,0)+isnull(A3,0))/3 AS 平均 FROM SY.DB WHERE (YEAR>='1989' AND CYEA <='1990') GROUP BY YEAR
yuanreid 2008-10-20
  • 打赏
  • 举报
回复

将表select into到一个新表,将所有的空值变成0,再出报表呢。
TripH0101 2008-10-20
  • 打赏
  • 举报
回复
将A1的缺省值设为0不就得了

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧