Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Średnia parametru w funkcji czasu
Hori
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 30.06.2017

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


W tabeli mam parametry z wartoscią liczbowa i timestamp co minutę.
Obecnie pobieram średnią z ostaniej godziny.

Sprawdzam też jak długo wstecz średnia utrzymuje się w danym przedziale.

Obecnie robie to w pętli php zmniejszając datę/czas początkowe o pięć minut i sprawdzam czy jeszcze średnia jest w danym przedziale.

Czy można to samo zrealizować wyłącznie poprzez jedno zapytanie do mySQL?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

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


Nie wiem czy to Ci coś ułatwi, ale poniższe zapytanie pokazuje średnie w interwałach czasowych co 5 minut (w przeciągu ostatnich ~8 godzin) począwszy od maksymalnej godziny (ostatniego pomiaru).

  1. SELECT interwal, MAX(w.czas), AVG(w.wartosc)
  2. FROM wartosc AS w,
  3. (SELECT MAX(czas) AS maks FROM wartosc) AS maks,
  4. (SELECT (a.a+10*b.a)*5 AS interwal FROM (
  5. (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
  6. CROSS JOIN
  7. (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
  8. )) AS interwaly
  9. WHERE w.czas<=(DATE_SUB(maks, INTERVAL interwal MINUTE)) AND w.czas>(DATE_SUB(DATE_SUB(maks, INTERVAL 60 MINUTE), INTERVAL interwal MINUTE))
  10. GROUP BY interwal


Tabela wartosc ma kolumny: id_wartosc, czas (DATETIME), wartosc

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: 10.10.2025 - 15:49