|
Tere Mul on tabel erinevate aegadega. Vaja oleks näha keskmisi aegasi erinevate aegade vahel. Toon toimiva näite, mis arvutab aritmeetilist keskmist aega nende vahel. Vaja oleks see muuta nii et näitaks mediaani. Mediaan on positsiooniline keskmine. Kui ajad järjestada kasvavas järjekorras, siis keskmine positsioon on mediaan. Selle saan muidugi leida üksiku ajavahe puhul mysql manuaalist toodud näite abil SELECT x.val from data x, data y GROUP BY x.val HAVING SUM(SIGN(1-SIGN(y.val-x.val))) = (COUNT(*)+1)/2 Kuna mul on aegasid umbes 10 ja erinevaid gruppe (6) ja liike (ca.30) ka päris palju siis ma pean iga nn. lahtri jaoks uue päringu moodustama, mis teeb lehe väga aeglaseks. Olemasoleva päringuga saan need korraga kätte.
|
|
Võib-olla VIEW tegemine aitab... ehk siis midagi sellist:
Jah aga siin on sama avg mis ei sobi, vaja oleks mediani.
(Jan 30 at 20:47)
Arvi
|
|
Tere Sain asja valmis ja töötab üsna hästi. Ei ole märgatavat kiiruse vahet tunda kui arvutan mediaane. Teen täispäringu andmebaasi, saamaks erinevate aegade sekundilised vahed. $sql_median="select yksus, liik, time_to_sec(timediff(vsoidu_aeg,teate_aeg)) as reag, time_to_sec(timediff(sk_saab,teate_aeg)) as joudmine, ... where tingimused Andmed kogun nii massiivi $med["reag"][$row["liik"]][$row["yksus"]][]=$row["reag"]; $med["joudmine"][$row["liik"]][$row["yksus"]][]=$row["joudmine"]; ..... Ja lisaks aritmeetilisele näidatakse vastavas kohas mediaani nii Median($med[$var_lahter][$var_liik][$var_yksus]) Median funktsioon ise on selline PHP kood:
|
