#1: Durchschnitt von z.B. 20 Vorgängerdatensätzen
Posted on 2007-06-15 23:12:35 by h.schoene
Hallo,
habe eine bestehende Tabelle mit den Feldern id, wert1 und wert2. Feld
wert2 ist leer. Datens=E4tze =3D mehrere Tausend.
Problem: M=F6chte in Feld wert2 den Durchschnitt der jeweils letzten 20
Vorg=E4ngerdatens=E4tze einf=FCgen.
Hat jemand dazu eine Idee?
Gruss Heiko
Report this message |
|
#2: Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
Posted on 2007-06-15 23:16:30 by h.schoene
On 15 Jun., 23:12, h.scho...@yahoo.de wrote:
> Hallo,
> habe eine bestehende Tabelle mit den Feldern id, wert1 und wert2. Feld
> wert2 ist leer. Datens=E4tze =3D mehrere Tausend.
> Problem: M=F6chte in Feld wert2 den Durchschnitt der jeweils letzten 20
> Vorg=E4ngerdatens=E4tze einf=FCgen.
> Hat jemand dazu eine Idee?
>
> Gruss Heiko
Vergessen: Ich meine den Durchschnitt von wert1 der jeweils letzten 20
Vorg=E4ngerdatens=E4tze.
Report this message |
#3: Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
Posted on 2007-06-16 09:27:12 by Andreas Kretschmer
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)
Report this message |
#4: Re: Durchschnitt von z.B. 20 Vorgängerdatensätzen
Posted on 2007-06-18 14:38:23 by Daniel Fischer
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 @temp = 1;
update tab set wert2 = 0;
ll: loop
update tab as a inner join tab as b on a.id = b.id + @temp set a.wert2 = a.wert2 + b.wert1;
set @temp = @temp + 1;
if @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
Report this message |