| SELECT yr, |
| mo, |
| SUM(coffee_hourly_avg) AS coffee_monthly_sum, |
| AVG(coffee_hourly_avg) AS coffee_monthly_avg, |
| SUM(printer_hourly_avg) AS printer_monthly_sum, |
| AVG(printer_hourly_avg) AS printer_monthly_avg, |
| SUM(projector_hourly_avg) AS projector_monthly_sum, |
| AVG(projector_hourly_avg) AS projector_monthly_avg, |
| SUM(vending_hourly_avg) AS vending_monthly_sum, |
| AVG(vending_hourly_avg) AS vending_monthly_avg |
| FROM ( |
| SELECT dt, |
| yr, |
| mo, |
| hr, |
| AVG(coffee) AS coffee_hourly_avg, |
| AVG(printer) AS printer_hourly_avg, |
| AVG(projector) AS projector_hourly_avg, |
| AVG(vending) AS vending_hourly_avg |
| FROM ( |
| SELECT CAST(log_time AS DATE) AS dt, |
| EXTRACT(YEAR FROM log_time) AS yr, |
| EXTRACT(MONTH FROM log_time) AS mo, |
| EXTRACT(HOUR FROM log_time) AS hr, |
| CASE WHEN device_name LIKE 'coffee%' THEN event_value END AS coffee, |
| CASE WHEN device_name LIKE 'printer%' THEN event_value END AS printer, |
| CASE WHEN device_name LIKE 'projector%' THEN event_value END AS projector, |
| CASE WHEN device_name LIKE 'vending%' THEN event_value END AS vending |
| FROM logs3 |
| WHERE device_type = 'meter' |
| ) AS r |
| GROUP BY dt, |
| yr, |
| mo, |
| hr |
| ) AS s |
| GROUP BY yr, |
| mo |
| ORDER BY yr, |
| mo; |