Unterschiedliche Werte bei Abfrage mit AVG und ohne

Werbung:
Aber wenn ich schreibe "SELECT EXTRACT(DAY_HOUR from timestamp) as ts, avg(data) as value, sensor FROM ...." bekomme ich dann als "ts"-Daten auch ein Datum+Uhrzeit zurück?

Wenn Du um 10:00, 10:20, 10:40 eine Messung machst mit Resultat 10, 20 und 30, dann ist der avg() darüber in dieser Stunde 10:00 - 11:00 halt 20. Welchen Timestamp welcher Messung willst Du da haben? Das ergibt keinen Sinn.
 
Welchen Timestamp welcher Messung willst Du da haben? Das ergibt keinen Sinn.
Am liebsten den Timestamp der ersten Messung.
Bei deinem Beispiel wäre der gewünschte Timestamp dann 10.00 + das entsprechende Datum.

Wären die Messung um 10.07, 10.33 und 10.51 dann würde ich als Timestamp gerne 10.07 Uhr haben, oder wenn das nicht geht als Timestamp den Beginn der zusammengefassten Messung.
Bei DAY_HOUR wäre das dann eben 10.00 + Datum, 11.00 + Datum, 12.00 + Datum .... usw...

Wichtig wäre mir aber noch zu wissen ob das GROUP BY sensor jetzt richtig ist und es das Problem behebt das der Durchschnitt über alle Sensoren berechnet wird.
 
Am liebsten den Timestamp der ersten Messung.

Code:
test=*# select * from messung ;
 sensor |  ts  | wert
--------+---------------------+------
  | 2015-03-24 10:00:00 |  10
  | 2015-03-24 10:20:00 |  20
  | 2015-03-24 10:40:00 |  30
  | 2015-03-24 11:00:00 |  50
  | 2015-03-24 11:10:00 |  55
(5 rows)

test=*# select extract(hour from ts), min(ts), avg(wert) from messung group by 1 order by 1;
 date_part |  min  |  avg
-----------+---------------------+---------------------
  10 | 2015-03-24 10:00:00 | 20.0000000000000000
  11 | 2015-03-24 11:00:00 | 52.5000000000000000
(2 rows)

Mahlzeit.
 
also so :

"SELECT min(timestamp) as ts, avg(data) as value, sensor FROM `sensor_data_moisture` WHERE sensor = 'jc5' AND timestamp > DATE_SUB(NOW(), INTERVAL 72 HOUR) GROUP BY sensor, EXTRACT(DAY_HOUR from timestamp) ORDER BY 1 ASC"

jetzt alles richtig?

Oder muss ich den Abschnitt "extract(hour from timestamp)" zwingend mit einbauen, auch wenn ich diese Spalte später nicht brauche?
 
Werbung:
Zurück
Oben