Ik heb problemen om een efficiente query te maken voor het volgende:
In een database zitten meetgegevens van elektrische apparaten (opwekking en verbruik) in Wh. De structuur van de tabel is vrij generiek omdat er meerdere soorten meetgegevens in moeten kunnen zoals temperatuur, lucthvochtigheid etc.
maar de belangrijkste velden zijn:
id - unit- name - value - timestamp
Nu staan daar de metingen in per minuut. Ik heb het voor elkaar om de resultaten te groeperen per uur, per dag of per minuut met de volgende query:
Zoals jullie zien haal ik nu alleen de energy consumption op. Hoe kan ik een query maken die energy consumption en production afzonderlijk van elkaar optelt.
Ik begrijp dat ik dan 'name' moet weghalen in de where clause maar hoe bouw ik de logica in om energy consumption en production afzonderlijk van elkaar te laten optellen. Ook kan het voorkomen dat er binnen de group zowel energy production en consumption is.
In een database zitten meetgegevens van elektrische apparaten (opwekking en verbruik) in Wh. De structuur van de tabel is vrij generiek omdat er meerdere soorten meetgegevens in moeten kunnen zoals temperatuur, lucthvochtigheid etc.
maar de belangrijkste velden zijn:
id - unit- name - value - timestamp
Nu staan daar de metingen in per minuut. Ik heb het voor elkaar om de resultaten te groeperen per uur, per dag of per minuut met de volgende query:
Code:
"SELECT DATE_FORMAT(timestamp, '$timestring') as timestring, sum(value) as power, device_id, DATE_FORMAT(timestamp, '$resolution_sql_string') as time, timestamp FROM measurements WHERE device_id > '99' AND name = 'Energy Consumption' AND timestamp >= '$period_from' AND timestamp <= '$period_to' GROUP BY time ORDER BY timestamp asc";
Zoals jullie zien haal ik nu alleen de energy consumption op. Hoe kan ik een query maken die energy consumption en production afzonderlijk van elkaar optelt.
Ik begrijp dat ik dan 'name' moet weghalen in de where clause maar hoe bouw ik de logica in om energy consumption en production afzonderlijk van elkaar te laten optellen. Ook kan het voorkomen dat er binnen de group zowel energy production en consumption is.
Code:
"SELECT DATE_FORMAT(timestamp, '$timestring') as timestring, sum(value) as power, device_id, DATE_FORMAT(timestamp, '$resolution_sql_string') as time, timestamp FROM measurements WHERE device_id > '99' AND unit = 'Wh' AND timestamp >= '$period_from' AND timestamp <= '$period_to' GROUP BY time ORDER BY timestamp asc";