首页 > 解决方案 > Django - 按仅返回值总和分组

问题描述

在 Django 中如何执行以下 SQL:

select sum(valor_aprovado) as vla
from convenios
group by ano
order by ano

期望的结果:

sum_value    |
-------------|
 472837446.59|
 163438615.51|
 448397994.27|
 959203234.57|
 739555948.32|

我正在使用以下语法,但我只希望它返回 VLA 字段而不是 ANO

Convenios.objects.values_list('ano').order_by('ano').annotate(vla=Sum('valor_aprovado')

结果:

[(2002, Decimal('36246385105.92')), (2003, Decimal('163442260.52')), (2004, Decimal('447464292.52')), (2005, Decimal('948880015.70')), (2006, Decimal('737373593.32')), (2007, Decimal('1449818896.88')), (2008, Decimal('1812889287.82')), (2009, Decimal('2306375485.81')), (2010, Decimal('8730479758.56')), (2011, Decimal('1662088139.88')), (2012, Decimal('1886396504.43')), (2013, Decimal('535507602.69')), (2014, Decimal('4279003118.70')), (2015, Decimal('1883240765.95')), (2016, Decimal('1245291830.72')), (2017, Decimal('2161176688.18')), (2018, Decimal('1346548803.43'))]

你能帮助我吗?谢谢

标签: djangogroup-by

解决方案


您可以尝试以下查询

Convenios.objects.values_list('ano').order_by('ano').annotate(vla=Sum('valor_aprovado')).values('vla')

推荐阅读