Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 25.01.2009 Ostrzeżenie: (0%)
|
Mam dylemat, jak realizować pewne funkcje statystyczne. Przykładowo codziennie scrapuje sobie kurs waluty. Zapisuje sobie w bazie wg formatu: data | kurs_dnia.
Pytanie, czy np. aby opracować sobie np. średnią przyrostu/spadku z np. 100 pozycji, musiałoby to oznaczać robienie w locie obliczania z surowych danych tego przy każdym wywołaniu witryny. Czy zatem nie lepiej sobie przy zaciąganiu danych od razu powyliczać niektóre dane? Mam też podobny dylemat jeśli chodzi np. o obliczanie przyrostów dla poszczególnych dni, wtedy ilość operacji była by jeszcze większa - bo dla każdej daty trzeba by było sprawdzić jaki to dzień tygodnia, wyciągnąć wartości osobno dla pon, wt, śr... itd, i dopiero tu zrobić średnią wg dni tygodnia. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
1. Jeżeli dane masz zapisywane dzień po dniu bez luk w dniach to możesz pozostać przy strukturze data, wartość. Wystarczy wówczas, że dołączysz (LEFT JOIN - LEFT by uwzględnić też pierwszy wynik) jeszcze raz tą samą tabelę (pamiętając o aliasie) na warunku (ON) poprzedni.data = biezacy.data - 1 dzien. No i zwykłym odejmowaniem obliczysz różnicę (pamiętając o COALESCE(poprzedni.wartosc, 0) żeby uniknąć NULLi). Jeśli natomiast mogą być luki w datach to nie możesz zrobić opisanego JOINa, bo zapewne chciałbyś uzyskać dane dla dnia poprzedniego zapisanego w bazie (czyli jeśli nie ma danych za wczoraj, to weź z przedwczoraj). Chyba, że miałyby Cię interesować tylko dni poprzednie - wówczas możesz zostać przy JOINie.
2. Dzień tygodnia możesz wyczaić w samym SQL: http://dev.mysql.com/doc/refman/5.5/en/dat...ction_dayofweek |
|
|
|
jsmp Zliczanie w przelocie, czy zapis do bazy 21.02.2014, 00:23:23
ghost1511 Pytasz o to czy od razu pobierać średnią z bazy cz... 21.02.2014, 09:49:47
jsmp Nie. To rozumiem, że jest wygodniejsze w zapytaniu... 21.02.2014, 10:39:16
ghost1511 Wydaje mi się że jeżeli chcesz to tylko do warstwy... 21.02.2014, 11:24:47
phpion Po co ta dodatkowa kolumna? Przecież to wszystko m... 21.02.2014, 11:33:05
ghost1511 Tak tak ja podałem rozwiązanie dla przypadku z lu... 21.02.2014, 11:35:22
phpion Ja bym zadbał o to by mieć dane na każdy dzień i z... 21.02.2014, 11:41:36 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 16:40 |