如何在 django 1.11 中查找给定月份每周的记录数?

Posted

技术标签:

【中文标题】如何在 django 1.11 中查找给定月份每周的记录数?【英文标题】:How to find count of records per week of given month in django 1.11? 【发布时间】:2018-05-09 02:55:21 【问题描述】:

我需要计算给定月份每周的记录数。 我使用如下查询获得了给定年份的每月计数

c = Cars.objects.filter(sold__year='2017').extra(select='month':'extract(month from sold)').values('month').annotate(perMnth=Count('sold'))

如何查找给定月份的每周计数,例如“十一月”月份的周计数,例如 week1=10、week2=12、week3=5 等

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题(按任意时间段汇总),我最终还是使用了 pandas。

pandas how to use groupby to group columns by date in the label?

【讨论】:

请检查我的答案,它可能会有所帮助。 哦,谢谢!我不知道。但是,在我的情况下,我必须按用户指定的范围对记录进行分组,因此提取会更加困难。呵呵,还是不错的。【参考方案2】:

您可以使用Extract 来执行此操作

from django.db.models.functions import ExtractWeek
from django.db.models import Count

Cars.objects.annotate(
    week_num=ExtractWeek('sold')   # sets week number for each row
).values(
    'week_num'
).annotate(
    count=Count('week_num')
)

请注意,ExtractWeek 是在 django 1.11 中引入的,因此它不适用于旧版本

【讨论】:

但这给出了所有周的计数,我需要的是特定给定月份的周计数。例如 2017 年 11 月的每周计数。 有什么方法可以获取给定月份的周数吗? @user123 如果您想按月份过滤,只需在 `annotate 之前使用 filter(sold__month=num) 是的,我尝试了过滤器 (sold__year=2017,sold__month=11),但显示的计数中存在总和不匹配。在 postgres 中,我从周一到周日、周日到周六、周一到周一等查询了相同的日期。但注释查询和 posgtres 查询显示不同的计数..我正在检查它..

以上是关于如何在 django 1.11 中查找给定月份每周的记录数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中查找给定日期每周的总播放时间?

noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T010204

如何在 Django 1.11 中运行 celery worker

查找在给定月份中花费最大金额的客户 ID

查找给定月份和年份中最后一天的名称

Django 1.11 如何从保存在 CMS 站点模型中的 HTML 中显示模板变量