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 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Problemy które poruszasz w poście zaznaczyłem po obliczeniach. Stąd właśnie pisałem by wtedy zmodyfikować to do potrzeb. Kompletnie jednak zapomniałem, że przecież MySQL ma własne funkcje statystyczne (IMG:style_emoticons/default/smile.gif) Wtedy liczenie niemal kompletnie Ci odpada. Jeśli masz wszystkie rekordy zapełnione to robisz tylko
A w pętli for tylko byś te dane wyświetlał i nic więcej. Gdy mowa o wyeliminowaniu pustych, lepiej "obrócić zapytania" i wywoływać dla konkretnych kategorii popytu, wyrzucając z zapytania wszystkie będące NULLami Trzymając się Twojego układu tabel dla kolumny drewno jest to:
W przypadku jednak bardzo dużej elastyczności rozwiązania warto pomyśleć o przebudowie tabeli i pomysł zaproponowany na tamtejszym forum jest jak najbardziej poprawny. Jeśli przyjmiemy więc, że baza wygląda jak z innego forum to możemy zrobić automatykę (IMG:style_emoticons/default/smile.gif)
Grupujesz po towarach i dla tych zgrupowanych liczysz średnią oraz odchylenie. Ja się dostosowywałem do Twojej bazy danych, ale jak widzisz odpowiednie zaprojektowanie tabeli potrafi przynieść lepsze efekty. Jako przyspieszacz ustawiłbym index na towary_id, a samo id można w zasadzie wyrzucić. Nazwy towarów możesz dorzucić jako osobną tabelę (z polami nazwa i id), które łączysz z towary_id by uzyskać nazwę towaru. Datę mimo wszystko bym zostawił wewnątrz dopóki jest mało produktów. Gdy będzie ich wiele dorzuciłbym pole wskazujące na datę z tabeli z datami (IMG:style_emoticons/default/smile.gif) Czyli w maksymalnie rozwiniętej wersji mamy: Tabela Data: id(int), data(date) Tabela Towar: id(int), nazwa(varchar) Tabela Produkty: id_daty(int), id_towaru(int), popyt(double) Teraz wyświetlanie wyników to:
Ten post edytował thek 27.08.2009, 13:17:06 |
|
|
|
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
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 ![]() ![]() |
|
Aktualny czas: 16.12.2025 - 18:01 |