Autor | Zpráva | ||
---|---|---|---|
jtfcobra Profil |
#1 · Zasláno: 15. 1. 2016, 10:39:00
Ahoj potřeboval bych poradit potřebujji udělat asi průměr mam zaznamy 365 a více .... a každý den jiná hodnota ale potřebuji udělat ověření kdy je nějvětší rozdíl.....přemýšlím jak to udělat...poradíte?
Mám v DB uloženo Např. (mam uložených 365 dni v roce) 1.1.2015 - 50 2.1.2015 - 38 3.1.2015 - 150 vysoká hodnota!! vypsat a uložit do DB jako chybu 4.1.2015 - 28 5.1.2015 - 50 6.1.2015 - 41 7.1.2015 - 55 8.1.2015 - 28 9.1.2015 - 50 10.1.2015 - 41 11.1.2015 - 55 12.1.2015 - 2128 - vysoká hodnota!! vypsat a uložit do DB jako chybu 13.1.2015 - 50 14.1.2015 - 41 15.1.2015 - 55 |
||
Joker Profil |
#2 · Zasláno: 15. 1. 2016, 10:47:59
jtfcobra:
A jak přesně se pozná ta vysoká hodnota? Jestli jde o rozdíl proti předchozímu dni, stačí to prostě odečíst (pokud se má evidovat i příliš velký pokles, ještě udělat absolutní hodnotu) a pokud výsledek je vyšší než zvolené číslo, uložit. |
||
jtfcobra Profil |
Jde o to ze je treba zjistit cca s posledních 3 měsícu hodnotu od ktere se to bude zjistovat...
Přemýšlel jsem sečíst všechny 3 měsíce a vypočítat s toho průměr ... pak by to fungovalo možná ... |
||
mimochodec Profil |
jtfcobra:
Projdi to cyklem. Když bude hodnota víc než dvojnásobná oproti minulé nebo menší než poloviční, našels. Můžeš na to jít samozřejmě nějak sofistikovaněji, můžeš ten postup použít třeba pro odfiltrování nějakých jehel. Ze zbytku pak spočítáš průměr a budeš pak v dalším průchodu zjišťovat rozdíl oproti průměru. (nevím, školy nemám, ale myslím, že kdybys ty jehly neodfiltroval a pracoval se všemi hodnotami, lepší než průměr by byl medián) |
||
jtfcobra Profil |
#5 · Zasláno: 15. 1. 2016, 11:21:17
Poradíš jak to napsat v PHP přes Mysql?
|
||
mimochodec Profil |
#6 · Zasláno: 15. 1. 2016, 11:48:13
Jak je to s tím počtem hodnot? Pracuješ se všemi řádky nebo jen "s posledních 3 měsícu"?
|
||
jtfcobra Profil |
#7 · Zasláno: 15. 1. 2016, 11:50:31
Stačí poslední 3 měsíce
|
||
mimochodec Profil |
#8 · Zasláno: 15. 1. 2016, 12:05:04
Ještě mě napadlo toto:
SELECT AVG(hodnota) maximum FROM (SELECT hodnota FROM table ORDER BY hodnota ASC LIMIT 70) top70 neboli vezmu nejmenších 70 hodnot (čili odfiltruju z 90 dvacet ústřelů směrem nahoru), spočítám z nich průměr. Co bude větší než řekněme dvojnásobek (nebo jiná buharská konstanta) tohoto , to tě asi zajímá. |
||
jtfcobra Profil |
#9 · Zasláno: 15. 1. 2016, 12:11:25
Takle to vypisu?
$result = mysql_query("SELECT AVG(hodnota) maximum FROM (SELECT hodnota FROM table ORDER BY hodnota ASC LIMIT 70) top70",$db); $radku = mysql_num_rows($result); for($i=0;$i<$radku;$i++) { $b=mysql_result($result,$i,"hodnota"); } echo $b; mysql_close($db); ?> |
||
mimochodec Profil |
$q = "SELECT AVG(hodnota) maximum FROM (SELECT hodnota FROM table ORDER BY hodnota ASC LIMIT 70) top70"; $prumer = mysql_result(mysql_query($q), 0); a dále pak samozřejmě $q = "select hodnota from table where hodnota>".($prumer*2); $vysledek=mysql_query($q); $radku=mysql_num_rows($vysledek); if ($radku>0) { while ($zaznam=MySQL_Fetch_Array($vysledek)): echo $zaznam["hodnota"]."<br>"; endwhile; }; |
||
jtfcobra Profil |
#11 · Zasláno: 15. 1. 2016, 12:55:16
vyzkouším a dám vědít
|
||
Keeehi Profil |
#12 · Zasláno: 15. 1. 2016, 14:38:15
Z pohledu statistiky jde o hledání outlierů. Pokud o tom chceš vědět víc, můžeš začít třeba na wiki.
|
||
Časová prodleva: 9 let
|
0