我有一张桌子,用于存储3个不同楼层的总耗电量。每天添加3个新行,每个楼层有一个记录。
--------------------------------------------------
--FloorNumber--TotalDailyConsumption--DateStamp---
--------------------------------------------------
-- 1 -- 1200 --2018-03-10--
-- 2 -- 1650 --2018-03-10--
-- 3 -- 1900 --2018-03-10--
-- 1 -- 1400 --2018-03-09--
-- 2 -- 1150 --2018-03-09--
-- 3 -- 1270 --2018-03-09--
--------------------------------------------------
我正在尝试创建一个查询,以便在过去7天内重新调整每个楼层的每日总消耗量。数据将自动插入数据库中。
----------------------------------------
--DateStamp---Floor1--Floor2--Floor3----
----------------------------------------
--2018-03-10-- 1200 -- 1650 -- 1900 --
--2018-03-09-- 1400 -- 1150 -- 1270 --
----------------------------------------
我目前有以下查询,我知道只返回楼层1的值,但是我无法弄清楚如何扩展它以包括其他两层楼。
SELECT DateStamp, TotalDailyConsumption AS Floor1 FROM floor WHERE
FloorNumber = 1 AND DateStamp >= DATE_ADD(CURDATE(), INTERVAL -7 day)
ORDER BY DateStamp DESC
答案 0 :(得分:2)
您想要group by
和条件聚合:
SELECT DateStamp,
SUM(CASE WHEN FloorNumber = 1 THEN TotalDailyConsumption END) AS Floor1,
SUM(CASE WHEN FloorNumber = 2 THEN TotalDailyConsumption END) AS Floor2,
SUM(CASE WHEN FloorNumber = 3 THEN TotalDailyConsumption END) AS Floor3
FROM floor f
WHERE DateStamp >= DATE_ADD(CURDATE(), INTERVAL -7 day)
GROUP BY DateStamp
ORDER BY DateStamp DESC;
答案 1 :(得分:0)
尽管戈登的答案符合您的需求,但如果您想要显示每周的消费量:
SELECT FloorNumber,
SUM(TotalDailyConsumption) as WeeklyConsumption
FROM test
WHERE DateStamp >= DATE_ADD(CURDATE(), INTERVAL -7 day)
GROUP BY FloorNumber
ORDER BY FloorNumber ASC;