| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2237 人关注过本帖
标题:[请教]如何设计查询语句计算不含零值的平均值。
只看楼主 加入收藏
zyzb
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-3-10
结帖率:66.67%
收藏
 问题点数:0 回复次数:15 
[请教]如何设计查询语句计算不含零值的平均值。
请教各位:
现在有一张表如下:
字段1    字段2     字段3
 5        6          9
 0        8          3
 7        1          6
返回的结果应该是:
 6        5          6
即零值自动排除在计算范围以外。
搜索更多相关主题的帖子: 如何 平均值 计算 
2012-09-20 23:05
zyzb
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-3-10
收藏
得分:0 
小弟只能计算成这样:
 4         5          6
求各位不吝指教。
2012-09-20 23:09
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
针对每个字段中的记录而言,字段1中有三个记录,其中一个记录为0,那么不含0的记录只有两条,平均值=6

average F1 TO X FOR NOT EMPTY(F1)

[ 本帖最后由 sdta 于 2012-9-20 23:37 编辑 ]

坚守VFP最后的阵地
2012-09-20 23:32
zyzb
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-3-10
收藏
得分:0 
不好意思,可能是我没说清楚,补充一下:
这张表里有很多字段,每个字段有很多行数据,每个字段里都有一些零值,我要求返回一行数据,这行数据对应的每个的平均值,例如:
字段1    字段2     字段3    ……
5        0          9       ……
0        8          0       ……
7        1          0       ……
0        3          3       ……
返回一行平均值应该是这样的:
6        4          6
平均值的结果可以放在一张新表中。
请问通过什么样的方法把这样的一行平均值求出来,是否要用编程的方法实现?
2012-09-21 17:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用zyzb在2012-9-21 17:42:44的发言:

不好意思,可能是我没说清楚,补充一下:
这张表里有很多字段,每个字段有很多行数据,每个字段里都有一些零值,我要求返回一行数据,这行数据对应的每个的平均值,例如:
字段1    字段2     字段3    ……
5        0          9       ……
0        8          0       ……
7        1          0       ……
0        3          3       ……
返回一行平均值应该是这样的:
6        4          6
平均值的结果可以放在一张新表中。
请问通过什么样的方法把这样的一行平均值求出来,是否要用编程的方法实现?
说你什么好,真是无语。
字段1=(5+7)/2=6
字段2=(8+1+3)/3=4
字段3=(9+3)/2=6

下次来记得带银子

[ 本帖最后由 sdta 于 2012-9-22 00:03 编辑 ]

坚守VFP最后的阵地
2012-09-21 23:58
zyzb
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-3-10
收藏
得分:0 
回复 5楼 sdta
不好意思,我上传一个表来详细说明一下:
cj.zip (11.59 KB)
pj.zip (891 Bytes)
数据在cj.zip中,计算结果在pj.zip中
我用的命令是:sele avg(语文),avg(数学),avg(综合),avg(英语),avg(总分),班级 from cj group by 班级
这条命令将所有含有零值的那一行也计算了,而这不是我所需要的结果。例如101班的语文平均成绩,按上面语句计算是99.31,而去除零值后应该是102.86才对。请问有什么好的办法?(实际想要的平均值数据在“平均.zip”中)
(895 Bytes)


[ 本帖最后由 zyzb 于 2012-9-22 11:52 编辑 ]
2012-09-22 11:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
SELECT MIN(班级),MAX(班级) FROM CJ INTO ARRAY BJ
SELECT * FROM cj INTO CURSOR CJ1
CREATE CURSOR PJ (语文 N(6,2),数学 N(6,2),综合 N(6,2),英语 N(6,2),总分 N(6,2),班级 N(3))
FOR J=BJ(1) TO BJ(2)
    SELECT CJ1
    average 语文 TO x1 FOR NOT EMPTY(语文) AND 班级=J
    average 数学 TO x2 FOR NOT EMPTY(数学) AND 班级=J
    average 综合 TO x3 FOR NOT EMPTY(综合) AND 班级=J
    average 英语 TO x4 FOR NOT EMPTY(英语) AND 班级=J
    average 总分 TO x5 FOR NOT EMPTY(总分) AND 班级=J
    INSERT INTO PJ VALUES (x1,x2,x3,x4,x5,j)
ENDFOR
SELECT PJ
BROWSE
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 sdta 于 2012-9-22 13:17 编辑 ]

坚守VFP最后的阵地
2012-09-22 13:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
SELECT MIN(班级),MAX(班级) FROM CJ INTO ARRAY BJ
SELECT * FROM cj INTO CURSOR CJ1
CREATE CURSOR PJ (语文 N(6,2),数学 N(6,2),综合 N(6,2),英语 N(6,2),总分 N(6,2),班级 N(3))
LOCAL X(6)
FOR J=BJ(1) TO BJ(2)
    SELECT CJ1
    AVERAGE 语文,数学,综合,英语,总分 TO ARRAY X FOR NOT INLIST(0,语文,数学,综合,英语,总分) AND 班级=J
    X(6)=J
    INSERT INTO PJ FROM ARRAY X
ENDFOR
SELECT PJ
BROWSE

坚守VFP最后的阵地
2012-09-22 13:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
SELECT AVG(语文),AVG(数学),AVG(综合),AVG(英语),AVG(总分),班级 FROM CJ WHERE NOT INLIST(0,语文,数学,综合,英语,总分) GROUP BY 班级 INTO CURSOR PJ
BROWSE

坚守VFP最后的阵地
2012-09-22 13:58
zyzb
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-3-10
收藏
得分:0 
谢谢,学习了
2012-09-24 11:14
快速回复:[请教]如何设计查询语句计算不含零值的平均值。
数据加载中...
 
   



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

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