2010-11-29 6 views
0

Django를 사용하여 하루에 여러 항목이있는 테이블에서 집계하여 일일 통계로 쿼리 세트를 생성하려고합니다. 여기에 테이블Django를 사용하여 하나의 테이블에 데이터 집계

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

이 내가 검색어 세트에이 얻고 싶은 결과의 SQL 상당 장고 모델이

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) 
    ... 

과 같은

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

내가 읽은가요 이 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')) 

답변

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) 
+0

이 작동하지 않았다, 그러나 그것은 바른 길에 나를 넣어 :이 작동합니다. 이것이 잘못 되었다면 테이블의 모든 필드는 Django가 생성 한 GROUP BY에서 끝납니다. 주석 앞에 .values ​​()를 삽입하면 올바른 결과를 얻을 수 있습니다. –

관련 문제