移动加权平均算法应用实例

 

/*------------------------------------------------------------------

--  Author : htl258(Tony)

--  Date   : 2010-04-17 14:10:13

--  Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)

    Jul  9 2008 14:43:34

    Copyright (c) 1988-2008 Microsoft Corporation

    Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)

 

------------------------------------------------------------------*/

--> 生成测试数据表:tb

 

IF OBJECT_ID('[tb]') IS NOT NULL

    DROP TABLE [tb]

GO

create table tb(

id INT

,Date1 datetime

,ctype varchar(10)

,qnt float

,pri float

)

 

--qnt 数量

--pri 单价

insert tb

select 0,'2009-1-1', '进货',  10,  100 union all

select 1,'2009-1-1', '进货',  50,  120 union all

select 2,'2009-1-2', '出货',  30,  150 union all

select 3,'2009-1-3', '进货',  40,  130 union all

select 4,'2009-1-3', '出货',  25,  160

GO

-- 我要算成本价,按移动加权平均

 

/*

1进货以后的成本价c1=(10*100+50*120)/(10+50)

2出货以后的成本价c2=((10+50)*c1-30*c1)/((10+50)-30)=C2          

--也就是说出货的时候价格不变

3进货以后的成本价c3=(((10+50)-30)*c2+40*130)/((10+50)-30+40)  

--也就是说进货的时候单价更新为(当前库存的总价值+库总价值)/入库后总数量

 

 

以此类推...

*/

--happyflystone

alter table tb add newc int;

alter table tb add nowpric numeric(18,12)

go

 

update b set

    newc =isnull((select sum( case when ctype= '进货' then qnt else -qnt end)

                  from tb

                  where id <=b.id),0)

from tb b

 

declare @d numeric(18,12)

set @d = 0

 

update tb set

    nowpric = @d*1.0/newc,

    @d = @d + case when ctype = '进货' then qnt else - qnt end *

             case when ctype = '进货' then pri else @d*1.0 / (newc+qnt) end

 

select * from tb

/*

id  Date1  ctype  qnt pri newc   nowpric

0   2009-01-01 00:00:00.000  进货 10  100 10  100.000000000000

1   2009-01-01 00:00:00.000  进货 50  120 60  116.666666666667

2   2009-01-02 00:00:00.000  出货 30  150 30  116.666666666667

3   2009-01-03 00:00:00.000  进货 40  130 70  124.285714285714

4   2009-01-03 00:00:00.000  出货 25  160 45  124.285714285714

*/

 

 

 

 

 

 



表TEST
id(主键)  字段1     字段2   字段3
1         5.00      2       0.00
3         6.00      5       0.00
4         10.00     3       0.00
5         8.00      2       0.00
6         16.00     4       0.00
...
如何移动加权平均得到字段3
id(主键) 字段1    字段2   字段3
1        5.00     2       5.00
3        6.00     5       5.00
4        10.00    3       57.14=(5.00*2+6.00*5)/(2+5)
5        8.00     2       7.00=(5.00*2+6.00*5+10.00*3)/(2+5+3)
6        16.00    4       7.17=(5.00*2+6.00*5+10.00*3+8.00*2)/(2+5+3+2)
---------------------------------------------------------
create table tb(id int ,字段1 numeric(8,2) , 字段2 int , 字段3 numeric(8,2))
insert into tb select 1,5.00,2,0.00
insert into tb select 3,6.00,5,0.00
insert into tb select 4,10.00,3,0.00
insert into tb select 5,8.00,2,0.00
insert into tb select 6,16.00,4,0.00
go

select id , 字段1 , 字段2 , 字段3 = isnull((select sum(字段1*字段2) / sum(字段2) from tb where id < t.id),字段1) from tb t

drop table tb

/*
id   字段1  字段2   字段3         
---- -----  -----  ---------
1    5.00   2      5.000000
3    6.00   5      5.000000
4    10.00  3      5.714285
5    8.00   2      7.000000
6    16.00  4      7.166666

(所影响的行数为 5 行)
*/
此例转自:http://topic.csdn.net/u/20080310/13/39629d84-7d44-4de0-a010-2a6688894ab8.html?seed=1944131440

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 电流采集是指使用传感器或测量设备对电路中的电流进行监测和采集的过程。电流采集主要用于电力系统、工业自动化、电子设备等领域中的电流监控和数据采集。 电流采集过程通常涉及到传感器的选择、安装和数据处理等步骤。为了实现准确的电流采集,选用合适的传感器是非常重要的。传感器的类型可根据采集对象的特性进行选择,常见的有电流互感器、霍尔传感器和电阻传感器等。 加权平均是一种常用的数据处理方法,可以有效地去除数据中的噪声和干扰,提高采集数据的准确性。在电流采集中,加权平均可以应用于电流信号的处理。通过对连续多个采样周期的电流数值进行加权平均,可以得到更准确的电流值,并且减小因电流波动引起的误差。 CSND是中国最大的IT社区,提供丰富的信息和资源,包括电流采集方面的知识和技术。在CSND上可以找到关于电流采集的教程、案例和经验分享,可以帮助人们更好地了解和应用电流采集技术。 电流采集和加权平均在工业自动化领域中有着广泛的应用。通过电流采集可以监测和控制电力系统中的电流变化,保证系统的安全稳定运行。而加权平均可以提高数据的精确度,为工程师和技术人员提供准确的电流数据,以便进行进一步的分析和决策。 综上所述,电流采集加权平均是一种用于监测和采集电流数据的方法,通过选择合适的传感器、应用加权平均等技术手段,可以获取更加准确和可靠的电流信息,为工业自动化和电力系统的运行提供支持。在CSND等IT社区上,可以获取更多关于电流采集的信息和资源,方便人们学习和应用相关技术。 ### 回答2: 电流采集是指通过传感器或测量仪器将电流信号转换成数字信号的过程。在实际应用中,为了获取更准确的电流值,通常会使用加权平均的方法。 加权平均是一种数学统计方法,它通过对不同数据进行加权处理,得到一个更准确的结果。在电流采集中,可以将不同时间点的电流值进行加权平均,以减小噪音的影响,得到一个更精确的电流数值。 具体而言,加权平均可以通过给每个电流值赋予一个权重来实现。一般情况下,最近采集到的电流值会赋予较高的权重,而较早的采集值会赋予较低的权重。这是因为最近的数据更能反映当前的电流状况,而较早的数据可能已经不再准确。 在进行加权平均时,还需要考虑权重的选择。常见的方法包括指数加权平均移动平均。指数加权平均对最近的数据赋予更高的权重,适用于需要更加关注当前电流变化的应用场景。而移动平均则会对过去的数据赋予较高的权重,适用于需要考虑电流长期趋势的场景。 总之,电流采集中的加权平均是一种有效的方法,可以提高采集电流数据的准确性。通过适当选择权重和采样频率,可以获得更加精确的电流值,进而为电流监测、控制和优化等应用提供可靠的数据支持。 ### 回答3: 电流采集是指通过传感器将电流信号转换为可量化的电压信号,然后通过采集设备进行采集和处理的过程。在电力系统、工业自动化等领域,电流采集是非常重要的一项技术。 电流采集的过程中,为了提高采集信号的精确性和稳定性,往往会使用加权平均的方法。加权平均是通过给不同的采样数据分配不同的权重,然后计算加权平均值。这样可以有效地减小因为噪声和干扰引起的采样误差,提高采样数据的准确性。 在电流采集中,采样频率和采样精度都会对采集结果产生影响。采样频率指的是采样设备每秒对电流进行采样的次数,采样精度指的是采集设备对电流信号进行量化的精度。采样频率越高,可以获取更多的采样数据,提高采集信号的精确性。而采样精度越高,可以提高数据的分辨率,获得更加准确的电流值。 以电力系统中的电流采集为例,常用的加权平均算法有简单移动平均法、指数移动平均法等。简单移动平均法是将当前采样值与一定数量的前一次采样值相加,再除以总的采样次数,得到加权平均值。指数移动平均法则是通过给最新的采样数据分配更高的权重,而给旧的采样数据分配较低的权重,得到加权平均值。这些加权平均算法能有效地消除电流采样中的噪声和干扰,提高电流采集的准确性和稳定性。 综上所述,电流采集中的加权平均方法可以提高采集信号的准确性和稳定性。通过选择适当的采样频率和采样精度,并结合合适的加权平均算法,可以得到更加精确的电流采样结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值