2011-04-01 30 views
4

就像下面的查詢,同時和Django的一些列的支持組:可以在其他列

select sum(T.a), sum(T.b) from Table T group by T.c , T.d 

,有沒有辦法在Django支持這種類型的查詢?

回答

5

這接近於:

class Test(models.Model):                       
    class Meta:                          
     app_label = 'ignore'                      
     db_table = 'T'                        
    a = models.IntegerField()                      
    b = models.IntegerField()                      
    c = models.IntegerField()                      
    d = models.IntegerField()  

result = Test.objects.values('c', 'd').annotate(Sum('a'), Sum('b')) 
print str(result.query) 

結果與:

選擇 「T」, 「C」, 「T」, 「d」,SUM( 「T」 的 「a」。 )AS「a_ sum」,SUM(「T」,「b」)AS「b_sum」FROM「T」GROUP BY「T」。「c」,「T」。「d」,「T」。 「C」, 「T」, 「D」

爲什麼GROUP BY值重複,我不知道......

+0

非常感謝〜 – Xiwen 2011-04-01 17:52:02

0

是,Django支持它,它記錄here

1

對我下面的工作:

>>> from django.db.models import Sum 
>>> from myapp.models import T 
>>> results = T.objects.values('c', 'd').annotate(Sum('a'), Sum('b')) 
>>> print results.query 
SELECT "myapp_t"."c", "myapp_t"."d", SUM("myapp_t"."a") AS "a__sum", SUM("myapp_t"."b") AS "b__sum" FROM "myapp_t" GROUP BY "myapp_t"."c", "myapp_t"."d" 

求助見Django documentation on aggregation

相關問題