2016-06-14 81 views
0

我陷入了一種情況,我需要一個等效的Django ORM用於以下sql查詢。請幫忙,我是django的新手。如何在Django ORM中使用GROUP BY

SELECT column1, column2, sum(column3) as total 
FROM table1 
GROUP BY column1; 

我已經試過 Table1.objects.values('column1', 'column2').annotate(total=Sum(column3)) 這使得上述ORM,因爲這:

SELECT column1, column2, sum(column3) as total 
FROM table1 
GROUP BY column1, column2; 

據分組列1列2和我不想要。

+0

你嘗試了什麼? – molivier

+0

尋求幫助的問題必須包括*期望的行爲*,*特定問題或錯誤*和*在問題本身**中重現**所需的最短代碼*。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+0

親愛的@jonathan先閱讀文檔 - https://docs.djangoproject.com/en/1.9/topics/db/aggregation/#order-by –

回答

2

看看你實際上要做的是:

Column1 Column2 Column3 
MP  C1  100 
MP  C1  110 
MP  C2  100 
MH  C3  50 
MH  C4  85 
RJ  C5  100 

現在如果你做SELECT Column1, Column2, sum(Column3) as total FROM table1 GROUP BY Column1這會變得很奇怪(也就是說,它會選擇Column2的第一個值,然後再與Column1中的每個值進行分組 - 這顯然會給wr ong結果(如果不是錯誤))。相反,有意義的是,您可以在分組依據中一起選擇Column1和Column2,以便groupby以合理的方式工作,或者在選擇列時不寫入Column2。

如果您的解釋看起來令人滿意,那麼您在您的問題(您自己提出的解決方案)中寫下的內容將能夠解決您的問題。

1

COLUMN2不會出現在GROUP BY將返回錯誤

SELECT column1, sum(column3) 
FROM table1 
GROUP BY column1; 

這個工作得很好,你