Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zrobić średnią ruchomą dla zakresu dat w SQL?

Poniższy przykład MySQL obejmuje przesuwane 7-dniowe okno:

select t1.`DATE`, AVG(t2.`VALUE`) as MV_AVG
from MyTable t1
left outer join MyTable t2 
    on t2.`DATE` between DATE_ADD(t1.`DATE`, INTERVAL -6 DAY) 
        and t1.`DATE`
group by t1.`DATE`

Przykład SQL Fiddle

Wyjście:

|                             DATE |    MV_AVG |
------------------------------------------------
|    August, 12 2012 20:00:00+0000 |       160 |
|    August, 19 2012 20:00:00+0000 |        52 |
|    August, 26 2012 20:00:00+0000 |        63 |
| September, 03 2012 20:00:00+0000 |        41 |
| September, 09 2012 20:00:00+0000 |      30.5 |
| September, 16 2012 20:00:00+0000 |        20 |
| September, 23 2012 20:00:00+0000 |       285 |
| September, 24 2012 20:00:00+0000 |     152.5 |
| September, 30 2012 20:00:00+0000 |      52.5 |
|   October, 08 2012 20:00:00+0000 |        41 |
|   October, 14 2012 20:00:00+0000 |      6037 |
|   October, 15 2012 20:00:00+0000 |      6610 |
|   October, 16 2012 20:00:00+0000 | 5624.6667 |
|   October, 21 2012 20:00:00+0000 | 1649.6667 |
|   October, 28 2012 20:00:00+0000 |        31 |
|  November, 04 2012 19:00:00+0000 |        10 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zautomatyzować migrację (schematu i danych) dla aplikacji PHP/MySQL

  2. Wybierz inkrementowaną liczbę całkowitą

  3. Parsowanie znaczników czasu - czy to w MySQL czy w PHP?

  4. Błąd MySQL jako argument dla ! postać

  5. mysqldump tworzenie kopii zapasowych i przywracanie na zdalnym serwerze