Агрегирование данных в одной таблице с помощью Django - PullRequest
0 голосов
/ 29 ноября 2010

Используя 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 голосов
/ 29 ноября 2010
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...