如何在 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 中查找给定月份每周的记录数?的主要内容,如果未能解决你的问题,请参考以下文章
noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T010204