2011-01-13 1 views
2

を照会します。利用FLOOR()(または他のSQL関数が)、私はこのようなクエリを実行する必要がありますジャンゴ1.2.3で

SELECT FLOOR(quantity/100) FROM mytable 

を純粋なDjangoのスタイルでそれを作るための方法はありますか?

その後、より困難なステップ:

SELECT FLOOR(quantity/100), count(*) 
FROM mytable 
GROUP BY FLOOR(quantity/100) 

は、任意の標準ソリューションはありますか?

+1

この参照:http://stackoverflow.com/a/34622417を/ 908336 –

答えて

3

私はextra句を使用して終了:

MyModel.objects.extra(group='FLOOR(quantity/100)')\ 
    .values('group')\ 
    .annotate(count=Sum('quantity'))\ 
    .order_by() 

Sumの引数は非常にミステリアスであるが、それは動作します...

+0

データベースベンダーに依存する関数を使用するように注意してください。 Django内で計算を行うことで、データベースにとらわれないまま同じ結果を得ることができます。しかし、あなたは独立のためにパフォーマンスを交換することができます。 –

+0

はい、私は知っていますが、私は何千ものレコードを扱っています... – Don

2

これにはSQLを使用する必要があります。 DjangoのORMはそれまでは非常に便利ですが、あなたがカバーしている事例からうまく進んでいます。私はraw() querysetメソッドがここで助けになると言っていません - 私はexecute custom SQL directlyに機能を使用します。

関連する問題