Mysql将给定日期范围内的每日总计汇总为每周总计

标签 mysql sql

目前,我的数据库表每天都有 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/

相关文章:

mysql - sqldf 查询返回 0 个值

php - 在php中使用mysqli_connect通过http认证

MYSQL 选择与联合中的别名相同的列名不起作用

Java - Tapestry - html 不解释数据库中的 <br>

sql - 如何按multipart X.Y[.Z] "version"数字对查询结果进行排序?

mysql - 连接表取决于事件和事件 ID

mysql - 按多个参数分组的累积和

php - 存储过程与否?

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

php - 遍历具有重复记录的 PHP 数组并删除值 = 0 的一条记录