如何在 django 聚合中使用 IN CONDITION

Posted

技术标签:

【中文标题】如何在 django 聚合中使用 IN CONDITION【英文标题】:How to use IN CONDITION in django Aggregation 【发布时间】:2018-04-18 15:04:43 【问题描述】:

如何使用 IN 条件(例如:SELECT SUM(a) FROM b WHERE a IN (1, 2, 3)) 通过使用 Django 聚合。

例子:

result = qs.aggregate(  
    amount = SUM(Case(WHEN('a IN(1, 2, 3)', then=Value(a)), default=0))
)

【问题讨论】:

【参考方案1】:

和其他in queries一样:

from django.db.models import Case, Sum, When, Value

result = qs.aggregate(
    amount=Sum(Case(When(a__in=[1, 2, 3], then=Value(a)), default=0))
)

【讨论】:

以上是关于如何在 django 聚合中使用 IN CONDITION的主要内容,如果未能解决你的问题,请参考以下文章

django orm 的查询条件

如何在 Django JSONField 数据上聚合(最小/最大等)?

使用SQL语言了解Django ORM中的分组(group by)和聚合(aggregation)查询

在 Django 中,我如何获得两个以上模型的聚合数据

在 Django 中聚合 save()s?

如何在 Django Rest Framework ModelViewSets 中添加聚合值