sql >> Database >  >> RDS >> PostgreSQL

Voortschrijdend gemiddelde op basis van tijdstempels in PostgreSQL

U kunt met zichzelf aan tafel gaan zitten:

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
;

Resultaten:

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

Let op:Er wordt alleen 'hard gewerkt'. U moet het resultaat samenvoegen met de originele tabel of nieuwe kolommen toevoegen aan de query. Ik weet niet wat uw laatste vraag is. Pas deze oplossing aan of vraag om meer hulp.



  1. Hoe Cosh() werkt in PostgreSQL

  2. Een getal opmaken als valuta in Oracle

  3. Een csv-bestand naar de SQL Server-database schrijven met python

  4. LOG() Functie in Oracle