2016-06-14 9 views
0

次のsqlクエリには、Django ORMが必要な状況に陥っています。助けてください、私はdjangoに新しいです。それは私がいけないcolumn1のとCOLUMN2をグループ化されDjango ORMでGROUP BYを使用する方法

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

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

私はこのよう上記のORMを作る Table1.objects.values('column1', 'column2').annotate(total=Sum(column3)) を試してみました。

+0

何を試しましたか? – molivier

+0

ヘルプを求める質問には、*目的の動作*、*特定の問題またはエラー*、および**問題を解決するために必要な最短コード**を質問**に含める必要があります。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –

+0

親愛なる@jonathanがまずドキュメントを読んでください - https://docs.djangoproject.com/en/1.9/topics/db/aggregation/#order-by –

答えて

2

ため、これは正常に動作エラー

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

を返します。それによってグループに表示されないです。今

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結果を出力する(エラーでない場合))。 GroupbyでColumn1とColumn2を一緒に選択することで、groupbyがわかりやすく動作するようにするか、列を選択するときにColumn2を書き込まないようにすることが理にかなっています。

説明があなたに満足しているようであれば、あなたの質問にあなたが書いたこと(あなたが思いついた解決策)があなたの目的を解決できるでしょう。

1

column2のは、あなたが効果的にやろうとしているものを参照してくださいあなた

関連する問題