首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL 查詢宿舍近 7 天每日用電量:使用條件聚合實現橫向顯示

     編輯:程式設計疑難解答

資料表結構

dormitoryElectric(dormitory, time, electric)

每小時記錄一次電表度數,需統計每宿舍近 7 天每日用電量(當日最後一度減前日最後一度)。

Oracle / MySQL 通用寫法

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) 取當天零點,減去天數即可定位每日區間。
  • MySQL 可用 DATE_SUB(CURDATE(), INTERVAL n DAY) 替代。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved