Djangoでは、データベースのクエリをPythonコードで書くことができます。その中でも、GROUP BYを使う方法について説明します。

モデルの定義

まず、以下のようなモデルを定義します。

class Target(BaseModel):
    # 金額
    amount = models.IntegerField()
    # 社員ID
    user = models.ForeignKey(User, on_delete=models.PROTECT)
    # 部署ID
    section = models.ForeignKey(Section, on_delete=models.PROTECT)

このモデルでは、Targetという名前のテーブルがあり、その中にはamount(金額)、user(社員ID)、section(部署ID)というフィールドがあります。

GROUP BYの使用

部署ごとの目標合計金額を取得するには、以下のように書きます。

total_amount_by_section = (
    Target.objects
    .values("section_id")
    .annotate(section_total=Sum("amount"))
    .values("section_id", "section_total")
)

このコードでは、まずTarget.objects.values("section_id")section_idによるグループ化を行います。次に、.annotate(section_total=Sum("amount"))で各グループのamountの合計を計算します。最後に、.values("section_id", "section_total")で結果を取得します。

この結果、部署IDとその部署の目標合計金額のリストが得られます。

以上がPython DjangoでGROUP BYを使う方法です。この方法を使えば、Pythonコードだけで複雑なデータベースの操作を行うことができます。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です