Pint the generated SQL

print  db(db.donation.id>0)._select(sum)

try execute the same command from pgsql shell. What do you get?

Massimo

On Nov 25, 7:41 pm, Bruno Rocha <[email protected]> wrote:
> Hi,
>
> I was using sum() to calculate the amount of donations received in 
> (http://natalanimal.com.br/init/default/extrato), but I've found a limit
> problem, I don't know if it is a PostgreSQL limit or sum() expression limit.
> *
> *
> *#----FIRST WAY, USING SUM()*
>
> In my model I have a field "db.donation.total" for each donation, to
> calculate this I did:
>
> sum = db.donation.total.sum()
> total = db(db.donation.id>0).select(sum)
>
> I got total as Rows object which has a key "SUM(donation.total)" inside
> _extra field as <Row {'_extra': <Row {'SUM(donation.total)': 515.0}>}>
>
> In this case it is returning *515.0* as result.
>
> *#---SECOND WAY LOOPING THROUGHT THE TABLE*
>
> Now I will make the same operation looping throught the values
>
> rows = db(db.donation.id>0).select()
> total = float(0)
> for row in rows: total += row.total
>
> In this case it is returning *590.0* as result
>
> *#---MY CONCLUSION*
>
> I figured out that the first way using sum() is limiting the rows of the
> sum, in this example sum() is considering only 35 rows when I have 41 rows.
>
> why this is missing 6 rows in this case? I tried lot of times with the same
> result set.
>
> Thanks
>
> --
>
> Bruno Rochahttp://about.me/rochacbruno/bio

Reply via email to