PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Gleitender Durchschnitt basierend auf Zeitstempeln in PostgreSQL

Sie können Ihren Tisch mit sich selbst verknüpfen:

select l1.id, avg( l2.Temperature )
from l l1
inner join l l2 
   on l2.id <= l1.id and
      l2.Timestamps + interval '15 minutes' > l1.Timestamps
group by l1.id
order by id
;

Ergebnisse:

| ID |            AVG |
-----------------------
|  1 |           5.39 |
|  2 |          5.365 |
|  3 | 5.296666666667 |
|  4 |         5.3575 |
|  5 |          5.346 |
|  6 | 5.321666666667 |
|  7 | 5.331428571429 |

Hinweis:Es wird nur 'harte Arbeit' geleistet. Sie sollten das Ergebnis mit der ursprünglichen Tabelle verbinden oder neue Spalten an die Abfrage anhängen. Ich kenne Ihre letzte Abfrage nicht. Passen Sie diese Lösung an oder bitten Sie um weitere Hilfe.