Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Obliczanie średniej i odchylenia standardowego
damianprz
post
Post #21





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

Ostrzeżenie: (0%)
-----


  1. UPDATE zapasy z LEFT JOIN (SELECT id_towaru, avg( popyt ) AS srednia, STD( popyt ) AS odchylenie FROM produkty GROUP BY id_towaru) p
  2. ON z.id_towaru = p.id_towaru SET z.srednia = p.srednia, z.odchylenie = p.odchylenie


Nie wiem dlaczego to nie działa u mnie
W tabeli zapasy mam 4 pozycje od id 1 do 4
W tabeli produkty mam dane dla 4 towarów w 36 rekordach (9 wartości popytu z różnymi datami dla 1 towaru)
  1. SELECT id_towaru, avg( popyt ) AS srednia, STD( popyt ) AS odchylenie FROM produkty GROUP BY id_towaru

daje taki wynik:

id_towaru ..........srednia ........................odchylenie
1 ......................10.555555555556 ..........3.6851386559504
2 ......................15 ................................5.2704627669473
3 .......................20 ...............................5.2704627669473
4 .......................18.111111111111 ..........8.7995510547659

czyli niby wszystko jest OK
Może mam źle ustawione klucze, indeksy...(IMG:style_emoticons/default/questionmark.gif)

Mam takie tabele:

zapasy

id_towaru int(10) Nie 0
Nazwa varchar(30) Nie
ZM int(10) Nie 0
ZZ int(10) Nie 0
ZR int(10) Nie 0
stan double Nie 0
srednia double Nie 0
odchylenie double Nie 0

produkty

id_daty int(11) Nie 0
id_towaru int(11) Nie 0
popyt double Nie 0






A tak jeszcze zapytam skąd wiesz że u Ciebie działa ok?
Zrobiłeś na szybcika podobną bazę danych?
Go to the top of the page
+Quote Post
thek
post
Post #22





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Owszem (IMG:style_emoticons/default/smile.gif) Mam na laptopie swoim wszystko co potrzebne do pracy programiście, webmasterowi (IMG:style_emoticons/default/smile.gif) Stworzenie tabeli w bazie i wypełnienie jej to chwilka.
MySQL 5.1.30
PHP 5.2.8
Apache: 2.2.11
Pokaż dokładnie jaki komunikat błędu wysypuje baza danych, by można było usterkę i jej przyczynę zlokalizować. Może gdzieś jest tylko literówka (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
damianprz
post
Post #23





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.08.2009
Skąd: Zamojsce

Ostrzeżenie: (0%)
-----


Już wszystko działa!
Instalka Vertrigo pomogła

(IMG:style_emoticons/default/guitar.gif)

Ten post edytował damianprz 29.08.2009, 16:14:41
Go to the top of the page
+Quote Post
thek
post
Post #24





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Widzę, ze sugestia o fatalnym wpływie MySQL 3.X na zapytanie przyniosła efekt. Pamiętaj by używać stabilnych nowych wersji oprogramowania jeśli chcesz testować cokolwiek. W necie jest bowiem wiele poradników, ale część z nich tyczy tylko albo bardzo nowych funkcji, które nie zawsze działają, albo tyczą się bardzo starych standardów. Ja też kiedyś mialem problem wlaśnie z MySQL 3 i stąd wiem, że lepiej zamienić ją na coś o wiele nowszego (IMG:style_emoticons/default/winksmiley.jpg) Nowsze bazy z reguły bowiem są o wiele bardziej zgodne ze standardami języka SQL.
Go to the top of the page
+Quote Post
MMaro
post
Post #25





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 3.11.2010

Ostrzeżenie: (0%)
-----


Witam

odkopuje temat - ponieważ mam problem z obliczeniem odchylenia standardowego... to co piszecie owszem działa ale co w sytuacji gdy mamy obliczyć odchylenie dla liczb, które zawierają liczby ujemne?? Skrypt sypie się w momencie obliczania kwadratów... ma ktoś pomysł jak to obejść?

  1. $sumy = mysql_fetch_row( mysql_query( "SELECT sum(popyt_drewno) AS suma_dr, sum(popyt_srubki) AS suma_sr, sum(popyt_klej) AS suma_kl, sum(popyt_farba) AS suma_fa FROM tablica_danych" ) );
  2. $kwadraty = mysql_fetch_row( mysql_query( "SELECT sum(pow(popyt_drewno, 2)) AS kw_dr, sum(pow(popyt_srubki, 2)) AS kw_sr, sum(pow(popyt_klej, 2)) AS kw_kl, sum(pow(popyt_farba, 2)) AS kw_fa FROM tablica_danych" ) );
  3. $temp = mysql_fetch_array( mysql_query( "SELECT count(id) AS ile FROM tablica_danych" ) );
  4. $liczba = $temp['ile'];
  5. for($i = 0; $i < 4; $i++) {
  6. $srednia = $sumy[$i]/$liczba;
  7. $odchylenie = sqrt( ($kwadraty[$i]/$liczba ) - pow( $srednia, 2 ) );
  8. echo 'Średnia wynosi: '.$srednia.', a odchylenie: '.$odchylenie
  9. }

i właśnie tutaj pojawia się problem...

  1. $kwadraty = mysql_fetch_row( mysql_query( "SELECT sum(pow(popyt_drewno, 2)) AS kw_dr, sum(pow(popyt_srubki, 2)) AS kw_sr, sum(pow(popyt_klej, 2)) AS kw_kl, sum(pow(popyt_farba, 2)) AS kw_fa FROM tablica_danych" ) );

Go to the top of the page
+Quote Post
thek
post
Post #26





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytanie... Po co obliczać odchylenie samemu, skoro MySQL posiada funkcję do tego? -> STDDEV_POP()
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.12.2025 - 18:23