Django 1.8 +,Python 3.4 +
我想对某组记录执行查询,按不同的标准对它们进行计数。
实际的SQL查询我的目标是实现:
select count(*),
sum(case when type=1 then 1 else 0 end),
sum(case when total > 1000 then 1 else 0 end)
from mytable
where conditions
是否可以在django中定义此查询,还是必须进行多次.filter().count()
来电?
答案 0 :(得分:1)
感谢ilse2005,我设法深入了解文档。
匹配我所需查询的QuerySet如下:
MyTable.objects.aggregate(
total=Count('id'),
responses=Sum(Case(When(type=1, then=1), default=0, output_field=IntegerField())),
big_ones=Sum(Case(When(total__gt=1000, then=1), default=0, output_field=IntegerField()))
)