dormitoryElectric(dormitory, time, electric)
每小時記錄一次電表度數,需統計每宿舍近 7 天每日用電量(當日最後一度減前日最後一度)。
SELECT t.dormitory,
SUM(CASE WHEN t.time >= TRUNC(SYSDATE) - 6 AND t.time < TRUNC(SYSDATE) - 5 THEN t.electric ELSE 0 END) AS day1,
SUM(CASE WHEN t.time >= TRUNC(SYSDATE) - 5 AND t.time < TRUNC(SYSDATE) - 4 THEN t.electric ELSE 0 END) AS day2,
...
SUM(CASE WHEN t.time >= TRUNC(SYSDATE) - 1 AND t.time < TRUNC(SYSDATE) THEN t.electric ELSE 0 END) AS day7
FROM dormitoryElectric t
GROUP BY t.dormitory;
CASE WHEN 條件聚合,將不同時段的度數分列顯示。TRUNC(SYSDATE) 取當天零點,減去天數即可定位每日區間。DATE_SUB(CURDATE(), INTERVAL n DAY) 替代。