django orm group by datetime from datetime,带groups聚合

wnrlj8wa  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(425)

我只有一张table,我想在那里 grouping by 首先,将这些组聚合为一些值。所以。。。
表“统计”

| owner_id | created_at | views | clicks | ... other numbers

当我这样做的时候,我想要得到的是:

Statistic.objects.filter(
        owner_id=X
    ).annotate(
        day=Cast('created_at', DateField())
    ).values(
        'day'
    ).annotate(
        models.Avg('views')
    )

... 是一个 list 数据分组依据 date 铸造自 created_at ( DateTime 字段)和聚合值,如平均视图或单击次数等。。。
问题是,django补充道 group by "statistic"."created_at" ,符合我的要求。我试过运行一个原始sql查询,但不幸的是,它还需要按创建的\u进行分组。
请帮助我,解释为什么需要,以及如何解决我的任务?

az31mfrm

az31mfrm1#

您可以使用 TruncDate 表达式[django doc]:

from django.db.models import Avg
from django.db.models.functions import TruncDate

Statistic.objects.filter(
        owner_id=X
).values(
    date=TruncDate('created_at')
).annotate(
    Avg('views')
).order_by('date')

相关问题