[英]Mysql Sum daily totals into weekly totals for given date range
目前,我的 db 表每天都有 dailTotal 值,我需要將這些分組為每周總計。
是否可以將每日總計添加到每周總計中,並在給定日期范圍內的每個每周總計顯示一行。
我不太確定從哪里開始這個。 我當前要獲取的查詢是按天計算的:
SELECT dailyTotal
FROM energyUsage
WHERE meterIdentifier = '1300011505120'
AND startTime >= '2017-01-01 00:00:00'
AND startTime <= '2017-12-31 00:00:00';
周可能有點模棱兩可。 一個方便的定義是內置定義。 所以,你可以使用yearweek()
做你想做的yearweek()
:
SELECT YEAREWEEK(startTime) as yyyyww, SUM(dailyTotal)
FROM energyUsage
WHERE meterIdentifier = '1300011505120' AND
startTime >= '2017-01-01' AND
startTime <= '2017-12-31'
GROUP BY yyyyww
ORDER BY yyyyww;
您可以查看mode
參數來控制星期是從星期日還是星期一開始,以及一年中的第一周是什么時候。 沒有模式說:“一年的第一周從 1 月 1 日開始”,盡管您可以為此目的加入邏輯。
注意:如果startTime
有一個時間組件,我猜你想要:
WHERE meterIdentifier = '1300011505120' AND
startTime >= '2017-01-01' AND
startTime < '2018-01-01' -- note the inequality
這應該這樣做:
SELECT SUM(dailyTotal) AS weeklyTotal
FROM energyUsage
WHERE meterIdentifier = '1300011505120'
AND startTime >= '2017-01-01 00:00:00'
AND startTime <= '2017-12-31 00:00:00'
GROUP BY YEAR(startTime),WEEK(startTime);
您可以使用聚合函數:
SELECT dailyTotal,
sum(dailyTotal) over (partition by EXTRACT(MONTH FROM StartTime)) as MonTotal
FROM energyUsage
WHERE meterIdentifier = '1300011505120'
AND startTime >= '2017-01-01 00:00:00'
AND startTime <= '2017-12-31 00:00:00';
我在這里假設了很多東西,但你明白了。
1- MySQL 版本支持聚合函數
2- 您的字段是日期類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.