| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 755 人关注过本帖
标题:用GROUP BY 分组求平均时怎样去掉每组中的0?
只看楼主 加入收藏
zhsql
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
用GROUP BY 分组求平均时怎样去掉每组中的0?
我现在有一个表DF_MMA,里面的数据一部分如下:

参数1         参数2         参数3     参数4     参数5     参数6
1     2011-11-22 18:08:40    0        202.7     247.81    27.478
2     2011-11-22 18:09:10    0        187.13    193.2     33.372
3     2011-11-22 18:09:40    20.38    302.5     68.004    33.284
4     2011-11-22 18:10:10    21.43    215.16    297.8     24.245
5     2011-11-22 18:10:40    0        381.65    192.99    39.975
6     2011-11-22 18:11:11    23.45    151.97    274.4     26.69
7     2011-11-22 18:11:40    0        144.99    302.27    23.464
8     2011-11-22 18:12:10    21.99    374.47    102.31    36.666
9     2011-11-22 18:12:40    0        285.54    166.69    29.831
10    2011-11-22 18:13:10    0        325.57    264.92    57.298
11    2011-11-22 18:13:40    20.35    698.3     287.26    106.82
12    2011-11-22 18:14:10    17.98    162.2     319.35    5.6648
13    2011-11-22 18:14:40    0        38.046    459.51    5.2741
14    2011-11-22 18:15:10    0        17.594    471.84    4.6087
15    2011-11-22 18:15:40    0        167.5     155.64    21.886
16    2011-11-22 18:16:10    0        39.786    443.74    4.9567
17    2011-11-22 18:16:40    0        17.32     471.42    4.5384
18    2011-11-22 18:17:10    0        278.82    94.905    29.432
19    2011-11-22 18:17:40    0        262.19    113.13    36.358
20    2011-11-22 18:18:10    18.63    247.38    82.002    35.766
21    2011-11-22 18:18:40    18       150.32    198.72    25.201
22    2011-11-22 18:19:10    19.34    267.83    159.11    30.912
23    2011-11-22 18:19:40    19.43    263.37    53.932    33.546
24    2011-11-22 18:20:10    19.95    239.26    51.279    30.238
25    2011-11-22 18:20:40    19.16    297.19    71.963    34.786
26    2011-11-22 18:21:10    18.84    304.85    154.49    39.401
27    2011-11-22 18:21:40    19.47    198.75    110.92    29.752
28    2011-11-22 18:22:10    19.61    234.19    68.483    33.601
29    2011-11-22 18:22:39    0        186.63    153.72    28.061
30    2011-11-22 18:23:09    19.12    264.82    125.91    28.433

我现在想把这些数据每10个一组取出参数3的平均值,以及参数2的最小最大值,SQL语句如下:
  
SELECT (参数1-1)\10+1,MIN(参数2),MAX(参数2),AVG(参数3) FROM DF_MMA
WHERE 参数2 >= #2011-11-22 18:08:40# AND 参数2 <= #2011-11-22 18:18:10#
GROUP BY (参数1-1)\10+1;

执行结果如下:
1    2011-11-22 18:08:40    2011-11-22 18:13:10    8.725000   
2    2011-11-22 18:13:40    2011-11-22 18:18:10    5.696000

现在的问题是,AVG(参数3) 这个算出来的是每个分组中10个数的平均值,无论里面有没有0,我现在想实现在分组求平均的时候先去掉0元素再算平均。比如第一个分组里有6个0,算平均的时候分母就是4(10-6),而不是10,其他所有组都这样,怎么实现啊~多谢各位指点啦~



[ 本帖最后由 zhsql 于 2011-12-5 10:10 编辑 ]
搜索更多相关主题的帖子: 怎样 
2011-12-05 10:06
chtml小兵
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:126
专家分:314
注 册:2011-10-3
收藏
得分:10 
好乱啊

做个程序员吧,在里面找到万千对象~~~~~~
百名书阁(bmbook.5d6d)__最全IT图书免费下载中心
net图书资料/软件工具大全____免费!!!
各种编程语言教程应有尽有
2011-12-05 13:26
zhsql
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-5
收藏
得分:0 
问题解决了,SQL语句改成下面这个就可以了~

SELECT (参数1-1)\10+1,MIN(参数2),MAX(参数2),SUM(参数3)/SUM(IIF(参数3<>0,1,0)) FROM DF_MMA
WHERE 参数2 >= #2011-11-22 18:08:40# AND 参数2 <= #2011-11-22 18:18:10#
GROUP BY (参数1-1)\10+1;
2011-12-05 13:45
foolboy
Rank: 2
等 级:论坛游民
帖 子:33
专家分:25
注 册:2005-12-13
收藏
得分:10 
以下是引用zhsql在2011-12-5 13:45:46的发言:

问题解决了,SQL语句改成下面这个就可以了~

SELECT (参数1-1)\10+1,MIN(参数2),MAX(参数2),SUM(参数3)/SUM(IIF(参数3<>0,1,0)) FROM DF_MMA
WHERE 参数2 >= #2011-11-22 18:08:40# AND 参数2 <= #2011-11-22 18:18:10#
GROUP BY (参数1-1)\10+1;
不错,学习。

For (I=1;I>=1;I++) {Life=Study}
2011-12-05 18:14
快速回复:用GROUP BY 分组求平均时怎样去掉每组中的0?
数据加载中...
 
   



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

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