MYSQL QUERY replace NULL value in a row with average values -



MYSQL QUERY replace NULL value in a row with average values -

i'm using mysql database store huge amount of satellite data, , these datasets has many data-gaps. replace null values 1 hour(or less) average around point. far i've found how replace null value previous known value:

update mytable set number = (@n := coalesce(number, @n)) order date;

from post: sql query replace null value in row value previous known value

my table looks like

+---------------------+--------+ | date | p_f | +---------------------+--------+ | 2001-01-01 20:20:00 | 1.88 | | 2001-01-01 20:25:00 | null | | 2001-01-01 20:30:00 | null | | 2001-01-01 20:35:00 | 1.71 | | 2001-01-01 20:40:00 | null | | 2001-01-01 20:45:00 | null | | 2001-01-01 20:50:00 | null | | 2001-01-01 20:55:00 | 1.835 | | 2001-01-01 21:00:00 | 1.918 | | 2001-01-01 21:05:00 | 1.968 | | 2001-01-01 21:10:00 | 2.004 | | 2001-01-01 21:15:00 | 1.924 | | 2001-01-01 21:20:00 | 1.8625 | | 2001-01-01 21:25:00 | 1.94 | | 2001-01-01 21:30:00 | 2.0375 | | 2001-01-01 21:35:00 | 1.912 |

i'd replace null values average values around datetime. instance i'd replace ,

| 2001-01-01 20:50:00 | null |

with average around

select avg(p_f) table date between '2001-01-01 20:30' , '2001-01-01 21:10';

paul

not elegant admit should want.

i'm not sure how want handle null values have hr average of null. in illustration below these updated -1.

create table mytable (mydate datetime not null, p_f decimal(10,5) default null ); insert mytable(mydate,p_f) values ('2001-01-01 20:20:00',1.88); insert mytable(mydate,p_f) values ('2001-01-01 20:25:00',null); insert mytable(mydate,p_f) values ('2001-01-01 20:30:00',null); insert mytable(mydate,p_f) values ('2001-01-01 20:35:00',1.71); insert mytable(mydate,p_f) values ('2001-01-01 20:40:00',null); insert mytable(mydate,p_f) values ('2001-01-01 20:45:00',null); insert mytable(mydate,p_f) values ('2001-01-01 20:50:00',null); insert mytable(mydate,p_f) values ('2001-01-01 20:55:00',1.835); insert mytable(mydate,p_f) values ('2001-01-01 21:00:00',1.918); insert mytable(mydate,p_f) values ('2001-01-01 21:05:00',1.968); insert mytable(mydate,p_f) values ('2001-01-01 21:10:00',2.004); insert mytable(mydate,p_f) values ('2001-01-01 21:15:00',1.924); insert mytable(mydate,p_f) values ('2001-01-01 21:20:00',1.8625); insert mytable(mydate,p_f) values ('2001-01-01 21:25:00',1.94); insert mytable(mydate,p_f) values ('2001-01-01 21:30:00',2.0375); insert mytable(mydate,p_f) values ('2001-01-01 21:35:00',1.912); insert mytable(mydate,p_f) values ('2001-01-02 20:40:00',null); -- insert re-create of null value p_f rows mytable 1 hr average mydate insert mytable (mydate,p_f) select t.mydate,ifnull((select avg(p_f) mytable t1 t1.mydate between t.mydate - interval 1 hr , t.mydate +interval 1 hour),-1) houravg mytable t t.p_f null; -- delete rows p_f null delete mytable p_f null;

mysql

Comments

Popular posts from this blog

delphi - blogger via idHTTP : error 400 bad request -

c++ - compiler errors when initializing EXPECT_CALL with function which has program_options::variables_map as parameter -

How do I check if an insert was successful with MySQLdb in Python? -