[解決済み] Django で group by AND aggregate する方法
2023-05-10 14:06:51
質問
ORM を通してかなり簡単なクエリを作成したいのですが、それがわかりません。
私は3つのモデルを持っています。
ロケーション(場所)、アトリビュート(場所が持つ可能性のある属性)、レイティング(スコアフィールドも含むM2Mの「スルー」モデル)です。
私はいくつかの重要な属性を選び、それらの属性によって場所をランク付けできるようにしたいと思います。
次のSQLを使用して、私が望むものを得ることができます。
select location_id, sum(score)
from locations_rating
where attribute_id in (1,2,3)
group by location_id order by sum desc;
を返します。
location_id | sum
-------------+-----
21 | 12
3 | 11
ORMで一番近いのは
Rating.objects.filter(
attribute__in=attributes).annotate(
acount=Count('location')).aggregate(Sum('score'))
を返す
{'score__sum': 23}
すなわち、場所によってグループ化されていない、すべての合計です。
これを回避する方法はありますか?SQLを手動で実行することもできますが、一貫性を保つためにORMを経由する方がよいでしょう。
ありがとうございます。
どのように解決するのですか?
これを試してみてください。
Rating.objects.filter(attribute__in=attributes) \
.values('location') \
.annotate(score = Sum('score')) \
.order_by('-score')
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
Django2.2エラー - AttributeError: ''str'' オブジェクトに ''decode'' 属性がない。
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み]どのようにdjangoでGROUP BYとしてクエリを実行するには?
-
[解決済み] Django-Rest-Framework のシリアライザーで Request.User を取得する方法とは?
-
[解決済み] Djangoで複数のfilter()を連鎖させる、これはバグ?
-
[解決済み] RESTful API のトークン認証:トークンは定期的に変更する必要がありますか?
-
[解決済み] Django: 日付によるグループ化 (日、月、年)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django vs. Model View Controller [終了しました]。
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み]どのようにdjangoでGROUP BYとしてクエリを実行するには?
-
[解決済み] Django の filter と get は単一オブジェクトの場合?
-
[解決済み] シグナルハンドラは django プロジェクトのどこにあるべきですか?
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] Django でモデルのフィールドを取得する
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] Django モデルで外部キーフィールドをオプションにすることはできますか?
-
[解決済み] Djangoで複数のfilter()を連鎖させる、これはバグ?