Durchschnitt von z.B. 20 Vorgängerdatensätzen
Hallo,
habe eine bestehende Tabelle mit den Feldern id, wert1 und wert2. Feld
wert2 ist leer. Datensätze =3D mehrere Tausend.
Problem: Möchte in Feld wert2 den Durchschnitt der jeweils letzten 20
Vorgängerdatensätze einfügen.
Hat jemand dazu eine Idee?
Gruss Heiko
Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
On 15 Jun., 23:12, h.scho... [at] yahoo.de wrote:
> Hallo,
> habe eine bestehende Tabelle mit den Feldern id, wert1 und wert2. Feld
> wert2 ist leer. Datensätze =3D mehrere Tausend.
> Problem: Möchte in Feld wert2 den Durchschnitt der jeweils letzten 20
> Vorgängerdatensätze einfügen.
> Hat jemand dazu eine Idee?
>
> Gruss Heiko
Vergessen: Ich meine den Durchschnitt von wert1 der jeweils letzten 20
Vorgängerdatensätze.
Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
h.schoene!
> Hallo,
> habe eine bestehende Tabelle mit den Feldern id, wert1 und wert2. Feld
> wert2 ist leer. Datensätze = mehrere Tausend.
> Problem: Möchte in Feld wert2 den Durchschnitt der jeweils letzten 20
> Vorgängerdatensätze einfügen.
> Hat jemand dazu eine Idee?
Ich fürchte, keine gute, ich bin erkältet...
Eine Anfang, für den id fortlaufend sein muss:
delimiter //
drop procedure if exists update_wert2//
create procedure update_wert2(cnt int)
begin
set [at] temp = 1;
update tab set wert2 = 0;
ll: loop
update tab as a inner join tab as b on a.id = b.id + [at] temp set a.wert2 = a.wert2 + b.wert1;
set [at] temp = [at] temp + 1;
if [at] temp <= cnt then iterate ll; end if;
leave ll;
end loop ll;
update tab set wert2 = wert2 / cnt;
end; //
delimiter ;
call update_wert2(20);
Gruß
Daniel