Python Django日期范围内的总和平均值
我试图在Django中构造一个查询,该查询将在一定时间范围内获得的平均值(即平均值)相加 以下是相关的Django模型:Python Django日期范围内的总和平均值,python,django,postgresql,Python,Django,Postgresql,我试图在Django中构造一个查询,该查询将在一定时间范围内获得的平均值(即平均值)相加 以下是相关的Django模型: class Data(models.Model): class Meta: verbose_name_plural = "Data" site = models.ForeignKey(Site) created_on = models.DateTimeField(auto_created=True) reported_on
class Data(models.Model):
class Meta:
verbose_name_plural = "Data"
site = models.ForeignKey(Site)
created_on = models.DateTimeField(auto_created=True)
reported_on = models.DateTimeField(null=True, blank=True)
baseline_power_kw = models.FloatField('Baseline Power (kw)', blank=True, null=True)
measured_power_kw = models.FloatField('Measured Power (kw)', blank=True, null=True)
在我的查询中,我试图在一定时间范围内平均站点的数据,然后对每个时间范围内的平均值求和。这是我到目前为止的查询,我相信它只得到了一系列时间内所有站点数据的平均值
t_data = Data.objects.filter(site__in=sites) \
.filter(created_on__range=(start, end)) \
.extra(select={'date_slice': "trunc(extract(epoch from created_on) / '60' )"}) \
.values('date_slice') \
.annotate(avg_baseline_power_kw=Avg('baseline_power_kw'),
avg_measured_power_kw=Avg('measured_power_kw'),
time=Min('created_on')) \
.order_by('-created_on')
你知道我该怎么做吗?我在Postgres中使用Django
谢谢 如果在.values()子句中添加“site”,如下所示:
.values('date_slice', 'site')
并删除order_by,这将导致“created_on”字段被添加到生成的SQL GROUP by中,您应该获得每个slice+站点的两个测量值的平均值。然后,您可以将这些值相加,得到所有站点的总数。如果您将“站点”添加到.values()子句中,如下所示:
.values('date_slice', 'site')
并删除order_by,这将导致“created_on”字段被添加到生成的SQL GROUP by中,您应该获得每个slice+站点的两个测量值的平均值。然后,您可以将这些值相加,得到所有站点的总数