目前,我的数据库表每天都有 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()
函数做你想做的事:
SELECT YEARWEEK(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
关于Mysql将给定日期范围内的每日总计汇总为每周总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854646/