使用Django在单个表中聚合数据

时间:2010-11-29 03:54:31

标签: django django-queryset

使用Django,我希望通过从每天多个条目的表中聚合来生成包含一些日常统计信息的查询集。这是表格

CREATE TABLE weather
(
  id serial NOT NULL,
  air_temp double precision NOT NULL,
  obs_date date,
  ....
)

这是我希望在查询集中获得此结果的SQL等价物

select obs_date, avg(air_temp) from weather group by obs_date order by obs_date

Django模型看起来像这样

class WeatherData(models.Model):

    obs_date = models.DateField('Obs Date', blank=False, null=False, db_index=True)
    air_temp = models.FloatField('Air Temp', blank=False, null=False)
    ...

我已阅读此http://docs.djangoproject.com/en/dev/topics/db/aggregation/但无法看到如何操作。建议表示赞赏。

更新:这有效:

WeatherData.objects.values('obs_date').annotate( max_air=Max('air_temp'), min_air=Min('air_temp'))

1 个答案:

答案 0 :(得分:0)

somedata = WeatherData.objects.annotate(Avg('air_temp')).order_by('obs_date')
for datum in somedata:
  print '%s: %s' % (datum.obs_date, datum.air_temp__avg)