Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

求列平均值

一十先生  发表于:2010-08-30 09:24:32  
复制

列1为日期,列2为厂家1单价,列3为厂家2单价,所有单价列中可能有空值,如何选择最近的5次有效单价数据求平均值。谢谢大家了!

点击下载此附件

 

Top
煮江品茶 发表于:2010-08-30 11:41:57
不明白,你的查询有什么问题?4.67不对嘛?

一十先生 发表于:2010-08-30 12:38:44
4.67为形式为HL的的厂家1单价的平均值:(5+3+6)/3=4.666666

一十先生 发表于:2010-08-30 12:41:12

问题是根据日期选出离查询日期最近的5次计算平均值,5次为不含空值的5次。



煮江品茶 发表于:2010-08-30 14:30:11
目前HL含空值共有5条记录,不含空值有3条记录。然后你希望怎么处理呢?

一十先生 发表于:2010-08-30 14:37:53

小于5条的,按实际有效数值计算平均值。



煮江品茶 发表于:2010-08-30 15:04:40

那以下计算有什么问题呢?

4.67为形式为HL的的厂家1单价的平均值:(5+3+6)/3=4.666666



一十先生 发表于:2010-08-30 15:12:05

假若数据增加到100条后,怎么达到我所要求的目的,以所附附件为列,假若我要取最近2次的有效数据的平均值该怎么办?



煮江品茶 发表于:2010-08-30 15:54:12

1、先做一联合查询:

 

(SELECT TOP 2 表1.厂家1单价 as 单价, 表1.形式
FROM 表1
WHERE ((Not (表1.厂家1单价) Is Null) AND ((表1.形式)="HL"))
ORDER BY 表1.日期 DESC)
UNION ALL (SELECT TOP 2 表1.厂家2单价 as 单价, 表1.形式
FROM 表1
WHERE ((Not (表1.厂家1单价) Is Null) AND ((表1.形式)="ZL"))
ORDER BY 表1.日期 DESC);

 

2、然后以这个联合查询为基础,做一个平均价查询:

 

SELECT 查询.形式, Avg(查询.单价) AS 单价之平均值
FROM 查询
GROUP BY 查询.形式;

 


 

点击下载此附件

总记录:8篇  页次:1/1 9 1 :