Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obliczanie średniej i odchylenia standardowego
damianprz
post
Post #1





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

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


(IMG:http://images48.fotosik.pl/188/36eb6354103b063bm.jpg)
SCREEN

Na screenie widać prosty schemat tabeli w bazie danych
Na dole struktura a na górze rekordy
Mamy 8 dni i 4 produkty dla których trzeba policzyć Popyt średni i Odchylenie Standardowe

Kolega proponuje tak obliczać Pśr i OS
Cytat("Norbert")
$pytanko="SELECT popyt_klej FROM popyt";
$rezultat = mysql_query($pytanko)
or die("Błąd zapytania");


$tablica = mysql_fetch_array($rezultat);
$n=count($tablica);
$srednia=0;

for($i=0;$i<=$n;$i++)
{
$srednia=$srednia+$tablica[$i];
}

$srednia=$srednia/$n;

for($i=0;$i<=$n;$i++)
{
$wyraz_srednia=$tablica[$i]-$srednia; // tutaj do zmiennej $wyraz_srednia przypisujesz roznice danej liczby i sredniej wszystkich liczb

$tablica2[$i]= $wyraz_srednia * $wyraz_srednia;
}

for($i=0;$i<=$n;$i++)
{
$wynik=$wynik+$tablica2[$i]; //dostajesz sume tych wszystkich kwadratow roznicy wyrazu i sredniej;
}
$wynik=sqrt($wynik);

echo "<h1>Srednia: ".$srednia."</h1><P>";
echo "<h1>Odchylenie: ".$wynik."</h1><P>";


Kod daje takie wyniki dla popyt_klej i popyt_srubki
Srednia: 10
Odchylenie: 17.320508075689

Kod daje takie wyniki dla popyt_farba i popyt_drewno
Srednia: 5
Odchylenie: 8.6602540378444

Powinna wyjść średnia dla popyt_klej:
160/8 czyli 20

Mam takie pytanie: Czy da radę napisać tak kod aby później była możliwość dodawania kolejnych wierszy Id=9, data, popyty dla poszczególnych towarów itd... oraz możliwość dodawania towarów, czyli chodzi mi o taki kod który by liczył Pśr i OS nawet gdy tabela będzie się rozrastać w 2 wymiarach

Chyba nie ma sensu dla każdego towaru robić osobną tabelę w bazie danych. Takie rozwiązanie jakie prezentuje screen, że w jednej tabeli są wszystkie towary i wszystkie wartości popytu jest chyba najlepszy. Tylko problem z tym ciężkim do wymyślenia kodem.

Jakby ktoś był w stanie coś wymyśleć to proszę o jakieś pomysły lub kontakt
GG 3257134
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
damianprz
post
Post #2





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

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


  1. Średnia wynosi: 10.625, a odchylenie: 3.903123748999
  2. Średnia wynosi: 15, a odchylenie: 5.5901699437495
  3. Średnia wynosi: 20, a odchylenie: 5.5901699437495
  4. Średnia wynosi: 18.125, a odchylenie: 9.3332403269175


Pomysł bardzo fajny
Dziękuje za pomoc

Po dodaniu nowych rekordów średnia będzie nadal liczona poprawnie.
Tylko, że jest problem taki, że gdy dodam do tabeli nowy produkt to raz że trzeba zmieniać dopisując
  1. sum(popyt_nowyprodukt) AS suma_no FROM popyt

i tu zmieniając 4 na 5
  1. for($i = 0; $i < 5; $i++)

Dodatkowo gdy nowy produkt zacznie mieć wpisywane wartości od id=9 to 8 pierwszych pozycji będzie pustych a skoro są na NOT NULL to będą brane chyba zera do średniej

Problem polega na tym, że marzy mi się kod który będzie stały, którego nie trzeba będzie zmieniać po każdym dodaniu produktu
Tylko że SELECTA chyba w pętle wziąźć nie można żeby zrobić coś w stylu
  1. $n=liczba kolumn zawierająca nazwę popyt_%
  2. % - zastępuje dowolny ciąg znaków
  3. SELECT popyt_% FROM popyt


Kolega z innego forum proponuje coś w tym stylu:

nowy projekt bazy danych:
(IMG:http://ambitni.eu/files/thumbs/t_1_313.png)
przykładowa tabela:
(IMG:http://ambitni.eu/files/beztytuu_799.png)

Proponuje taki kod:
  1. SELECT AVG(popyt),STD(popyt) FROM popyt WHERE towary_id=1;


Tylko że też jest problem bo policzy to dla Id=1 i jak damy to dla 2 3 i 4 ale jak zrobić żeby dodać 5 produkt i żeby nie dodawać linijki
  1. SELECT AVG(popyt),STD(popyt) FROM popyt WHERE towary_id=5;

Go to the top of the page
+Quote Post

Posty w temacie
- damianprz   Obliczanie średniej i odchylenia standardowego   26.08.2009, 17:47:27
- - *OuTSideR*   przy obliczaniu sredniej zmien znak <= na < ...   26.08.2009, 18:22:25
- - damianprz   I co to da? Próbowałem i nic Powyższy kod bierze ...   26.08.2009, 21:20:22
- - thek   Wartość średnia to prosta sprawa, robisz bowiem su...   26.08.2009, 22:09:38
- - damianprz   Tylko jak zrobić sumowanie wszystkich wartości w k...   26.08.2009, 22:19:13
- - thek   Sumowanie wszystkiego w kolumnie: [SQL] pobierz, p...   26.08.2009, 22:47:41
- - damianprz   [PHP] pobierz, plaintext Średnia wynosi: 10.625, a...   27.08.2009, 11:59:54
- - thek   Problemy które poruszasz w poście zaznaczyłem po o...   27.08.2009, 13:01:53
- - damianprz   Na screenie widać 3 tabelki które zrobiłem wg twoj...   27.08.2009, 15:06:49
- - thek   Bo z rozpędu nie dopisałem warunku łączenia [SQL]...   27.08.2009, 15:59:16
- - damianprz   Możesz mi sprawdzić czy to jest OK? Do wyświetlani...   27.08.2009, 16:04:56
- - thek   Kod wygląda poprawnie. W sumie chyba jedynie nie m...   27.08.2009, 20:02:28
- - damianprz   Dzięki stary za pomoc Powyższe obliczenia stosuje ...   27.08.2009, 21:46:24
- - thek   No jasne. Zauważ, że grupujesz dane po id_towaru. ...   27.08.2009, 23:38:49
- - damianprz   Oj kolego thek, co ja bym bez Ciebie zrobił Dzięk...   28.08.2009, 00:00:18
- - thek   A ja życzę powodzenia w kodzie php/html i analizie...   28.08.2009, 00:54:52
- - damianprz   Ponoć ma być raczej pod koniec września tak żeby j...   28.08.2009, 18:21:36
- - thek   Zapytanie sypie Ci błąd bo nie nadałeś aliasu dla ...   28.08.2009, 21:37:08
- - damianprz   Już wcześniej ustawiłem wartości na double z obawy...   28.08.2009, 21:53:30
- - thek   Nie dublujmy może tematów i skupmy się w jednym U...   28.08.2009, 23:31:14
- - damianprz   [PHP] pobierz, plaintext UPDATE zapasy z LEFT JOIN...   29.08.2009, 11:40:41
- - thek   Owszem Mam na laptopie swoim wszystko co potrzebn...   29.08.2009, 13:21:54
- - damianprz   Już wszystko działa! Instalka Vertrigo pomogła   29.08.2009, 13:28:35
- - thek   Widzę, ze sugestia o fatalnym wpływie MySQL 3.X na...   29.08.2009, 16:20:12
- - MMaro   Witam odkopuje temat - ponieważ mam problem z ob...   21.06.2012, 17:50:42
- - thek   Pytanie... Po co obliczać odchylenie samemu, skoro...   21.06.2012, 19:20:41


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: 5.10.2025 - 15:47