Django select distinct sum

Posted by yoshi on Stack Overflow See other posts from Stack Overflow or by yoshi
Published on 2010-03-20T02:02:58Z Indexed on 2010/03/20 2:11 UTC
Read the original article Hit count: 509

Filed under:
|

I have the following (greatly simplified) table structure:

Order:
    order_number = CharField
    order_invoice_number = CharField
    order_invoice_value = CharField

An invoice number can be identical on more than one order (order O1 has invoice number I1, order O2 has invoice number I1, etc.). All the orders with the same invoice number have the same invoice value.

For example:

Order no.    Invoice no.    Value
O1           I1             200
O2           I1             200
O3           I1             200
04           I2             50
05           I2             100

What I am trying to do is do a sum over all the invoice values, but don't add the invoices with the same number more than once. The sum for the above items would be: 200+50+100.

I tried doing this using

s = orders.values('order_invoice_id').annotate(total=Sum('order_invoice_value')).order_by() 

and

s = orders.values('order_invoice_id').order_by().annotate(total=Sum('order_invoice_value'))

but I didn't get the desired result. I tried a few different solutions from similar questions around here but I couldn't get the desired result.

I can't figure out what I'm doing wrong and what I actually should do to get a sum that uses each invoice value just once.

© Stack Overflow or respective owner

Related posts about django

Related posts about django-queries