使用django的ORM框架按月统计近一年内的数据方法

时间:2021-05-22

如下所示:

# 计算时间time = datetime.datetime.now() - relativedelta(years=1)# 获取近一年数据one_year_data = Data.objects.filter(create_time__gte=time_ago)# 分组统计每个月的数据count_res = one_year_data\ .annotate(year=ExtractYear('create_time'),month=ExtractMonth('create_time'))\ .values('year', 'month').order_by('year', 'month').annotate(count=Count('id'))print(count_res)

打印结果:

<QuerySet [{'year': 2018, 'month': 7, 'count': 3}, {'year': 2019, 'month': 5, 'count': 7}, {'year': 2019, 'month': 6, 'count': 161}]>

annotate()方法:

对数据集先进行分组然后再进行某些聚合操作或排序时,需要使用annotate方法来实现。与aggregate方法不同的是,annotate方法返回结果的不仅仅是含有统计结果的一个字典,而是包含有新增统计字段的查询集(queryset)。

以上这篇使用django的ORM框架按月统计近一年内的数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章