mysql - Django 按日期分组和 SUM 值包括 SUM 零

标签 mysql django django-models

Django 按日期分组和 SUM 值包括 SUM 零

values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(datetime__range=( ? ) )

我想添加该月中每一天的所有值。包括总和为零的日期。

为什么 sum 同时对日期时间和数据进行运算?

我尝试了 django 文档中的所有地方,但没有找到与我的问题一致的内容。有什么建议吗?

有一篇与此类似的帖子,但它不显示为零的日值总和 Django group by dates and SUM values

+---------------------+-----------+
| datetime            | SUM(data) |
+---------------------+-----------+
| 2013-07-01          |       489 |
| 2013-07-02          |      2923 |
| 2013-07-03          |       984 |
| 2013-07-04          |      2795 |
| 2013-07-05          |      0    |
| 2013-07-06          |      1365 |
| 2013-07-07          |      1331 |
| 2013-07-08          |       0   |
| 2013-07-09          |       919 |
| 2013-07-10          |       722 |
| 2013-07-11          |       731 |
| 2013-07-12          |       489 |
| 2013-07-13          |      2923 |
| 2013-07-14          |       984 |
| 2013-07-15          |      2795 |
| 2013-07-16          |      0    |
| 2013-07-17          |      0    |
| 2013-07-18          |      0    |
| 2013-07-19          |      0    |
| 2013-07-20          |       919 |
| 2013-07-21          |       722 |
| 2013-07-22          |       731 |
| 2013-07-23          |      1365 |
| 2013-07-24          |      1331 |
| 2013-07-25          |       0   |
| 2013-07-26          |       919 |
| 2013-07-27          |       722 |
| 2013-07-28          |       731 |
| 2013-07-29          |      1365 |
| 2013-07-30          |      1331 |
| 2013-07-31          |       0   |
+---------------------+-----------+
11 rows in set (1.45 sec)

最佳答案

据我所知,问题并不是“Sum 同时对日期时间和数据进行运算”。您从表的行中获取日期,如果特定日期没有行,那么您显然不会得到该日期和 0 作为数据总和的结果(但如果您有行,但它们的数据总和是0 - 你会的)。因为您正在聚合行,而不是“月”或类似的东西。我认为实际上没有办法用 SQL 来描述这一点,绝对不能用 Django 来描述。在处理这样的任务时,我只是在 python 中手动填充缺失日期 0,通过迭代一个月中的每一天并检查它是否在结果集中。我使用了 pendulum 库 https://github.com/sdispater/pendulum ,它对于此类任务具有很好的 Range 功能 https://pendulum.eustace.io/docs/#range 。但如果您只需要从第一天到最后一天,手动构建日期可能会更容易)。

关于mysql - Django 按日期分组和 SUM 值包括 SUM 零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274239/

相关文章:

PHP 和 MySQL - 检查用户名是否已被占用

django - 何时在 django 中对静态文件使用不同的服务器

python - 模板中的阅读路径

python - Django-registration - 一些激活

django - 在 Django 中指定列名的别名

python - 在django中查询数组

mysql - 需要在不重启数据库的情况下清除 MySQL InnoDB 锁

java - 使用核心java程序无密码连接Mysql

Django 按日期排序,但末尾有 "None"?

MySQL 从两个表中选择,其中 userid 在第一行,item 在第二行