I am trying to do a django aggregate function, but am unable to produce the desired result.
What I've got:
income_posts.values_list('category__name','amount')
[(u'Donation', Decimal("2000.00")), (u'Paycheck', Decimal("1200.00")), (u'Donation', Decimal("1000.00"))]
Desired result:
[(u'Donation', Decimal("3000.00")), (u'Paycheck', Decimal("1200.00))]
I need to Sum the 'amount' fields that have the same category__name.
From this answer for a related question:
from django.db.models import Sum
income_posts.values('category__name').order_by('category__name').annotate(total=Sum('amount'))
Just to add to arjun27's answer. Since that package seems to have been abandoned you might want to just copy past the 3 lines you need from it:
from django.db.models import Sum
class DistinctSum(Sum):
function = "SUM"
template = "%(function)s(DISTINCT %(expressions)s)"
Which can be used the same as above:
income_posts.annotate(total=DistinctSum('amount')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With