Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie w przelocie, czy zapis do bazy
jsmp
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ja bym zadbał o to by mieć dane na każdy dzień i zrobił to tak:
  1. CREATE TABLE `test` (
  2. `date` DATE NOT NULL ,
  3. `value` INT NOT NULL ,
  4. PRIMARY KEY (`date`) );
  5.  
  6. INSERT INTO `test` (`date`, `value`) VALUES
  7. ('2014-02-18', 10),
  8. ('2014-02-19', 22),
  9. ('2014-02-20', 31),
  10. ('2014-02-21', 44)
  11. ;
  12.  
  13. SELECT
  14. cur.date,
  15. cur.value,
  16. (CASE WHEN prev.value IS NOT NULL THEN cur.value - prev.value ELSE NULL END) AS diff
  17. FROM
  18. test AS cur
  19. LEFT JOIN test AS prev ON (prev.date = DATE_SUB(cur.date, INTERVAL 1 DAY))
  20. ORDER BY
  21. cur.date ASC
  22. ;
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 16:38