gpt4 book ai didi

mysql - 将平均值加到平均值

转载 作者:行者123 更新时间:2023-11-29 01:03:07 25 4
gpt4 key购买 nike

我有一个将平均值添加到现有平均值的查询,我已经缩短了示例中插入的行数,但通常我们每天多次同时执行 5,000 行。

INSERT INTO stats (impcount, 
average_position,
state,
dir_id,
viz_id,
date_date,
org_id,
order_id) VALUES
('2', '1', '', '5537', '22189', '2014-11-06', '-1', '15963'),
('2', '2', '', '5624', '22020', '2014-11-06', '-1', '15963'),
('2', '3', '', '5624', '18215', '2014-11-06', '-1', '15963'),
('2', '4', '', '6153', '22071', '2014-11-06', '-1', '15963'),
('1', '9', '', '5624', '21735', '2014-11-06', '-1', '15634')
ON DUPLICATE KEY UPDATE impcount = impcount + VALUES(impcount),
average_position = VALUES(average_position) + ((((average_position * impcount)
+ ( VALUES(impcount) * VALUES(average_position)) ) / (impcount + VALUES(impcount) ))
- average_position);

表结构如下:

CREATE TABLE stats (
record_id bigint(10) NOT NULL AUTO_INCREMENT,
date_year varchar(4) DEFAULT NULL,
date_month char(2) DEFAULT NULL,
date_day char(2) DEFAULT NULL,
impcount int(10) DEFAULT NULL,
date_hour varchar(4) DEFAULT NULL,
dir_id bigint(20) unsigned DEFAULT NULL,
viz_id int(9) NOT NULL DEFAULT '0',
order_id int(3) DEFAULT '0',
date_date date NOT NULL DEFAULT '0000-00-00',
average_position double DEFAULT NULL,
state varchar(200) DEFAULT NULL,
org_id int(10) unsigned DEFAULT NULL,
PRIMARY KEY (record_id),
UNIQUE KEY viz_id (viz_id,order_id,date_date,org_id),
KEY viz_counts (viz_id,date_date,impcount,average_position,order_id),
KEY daily_counts (date_date,impcount,order_id,average_position),
KEY dir_counts (dir_id,date_date,order_id),
KEY org_id (org_id)
) ENGINE=InnoDB AUTO_INCREMENT=33499742809 DEFAULT CHARSET=latin1;

有谁知道简化这个的方法,我不是特别了解这背后的数学原理,但希望有人能认出它并知道更好/更简单/更快的方法来完成同样的事情。

impcount 是每行的展示次数,average_position 是每次展示位置的直接平均值。据我了解,这是一个滚动平均值,其中每个重复 key 更新都保持平均值准确。

最佳答案

设 A1 和 A2 分别是计数为​​ N1 和 N2 的两个平均值。那么合并平均就是

    N1 × A1 + N2 × A2
A = -----------------
N1 + N2

计数 N = N1 + N2。


请注意,如果您将数据存储为求和 S1 和 S2 并计算 N1 和 N2,则执行此操作会容易得多。合并总和为S1 + S2,合并计数为N1 + N2,计算平均值为S/N。

关于mysql - 将平均值加到平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com