You raise a good point. If the calculations are done database side
then I suppose it is worth the difficulty in syntax.

I just wish the syntax was more natural.

-Thadeus





On Tue, Mar 9, 2010 at 9:54 PM, mdipierro <[email protected]> wrote:
> I disagree. In the case you are proposing, the computation would be
> done web2py site since you are fetching all rows.
> In the current implementation you can do
>
> s=(db.some_table.amount.sum()
> +db.some_table.amount.min())*(db.some_table.amount.max()+3)
> row = db(...).select(s).first()
> answer = row[s]
>
> and it still works. The computation is done by the database without
> fetching data. It is very general.
>
> On Mar 9, 9:08 pm, Thadeus Burgess <[email protected]> wrote:
>> Still doesn't seem natural.
>>
>> db(...).select(....).sum(db.table.field) seems much more natural.
>>
>> rows = db(db.table.id > 0).select(orderby=~db.table.datetimestamp)
>>
>> total_hours = rows.sum(db.table.hours_worked)
>> avg_hours = rows.avg(db.table.hours_worked)
>>
>> Would the actual implementation of this be difficult ?
>>
>> -Thadeus
>>
>> On Tue, Mar 9, 2010 at 9:03 PM, mdipierro <[email protected]> wrote:
>> > s=db.some_table.amount.sum()
>> > row = db(...).select(s).first()
>> > answer = row[s]
>>
>> > On Mar 9, 8:23 pm, Thadeus Burgess <[email protected]> wrote:
>> >> Is it just me or is this archaic?
>>
>> >> -Thadeus
>>
>> >> On Tue, Mar 9, 2010 at 6:48 PM, Russell <[email protected]> 
>> >> wrote:
>> >> > The number is stored in a dictionary called '_extra'.  The top part of
>> >> > what you are getting is the dictionary key.  Do something like this to
>> >> > get just the number...
>>
>> >> > row = db(...).select(db.some_table.amount.sum())[0]
>> >> > answer = row.'_extra['SUM(some_table.amount) ']
>>
>> >> > See pg 169 of the book.
>>
>> >> > On Mar 10, 1:23 pm, minh <[email protected]> wrote:
>> >> >> I couldn't find much documentation on sum() and I'm not sure how to
>> >> >> use it.
>>
>> >> >> If I have something like
>>
>> >> >> define_table('some_table',
>> >> >>    Field('amount', 'integer')
>> >> >>   ...
>>
>> >> >> I try db(...).select(db.some_table.amount.sum())
>>
>> >> >> When I print it out, I get something like:
>>
>> >> >> SUM(some_table.amount)
>> >> >> 300
>>
>> >> >> How do I get it to print just the number?
>>
>> >> >> Thanks.
>>
>> >> > --
>> >> > You received this message because you are subscribed to the Google 
>> >> > Groups "web2py-users" group.
>> >> > To post to this group, send email to [email protected].
>> >> > To unsubscribe from this group, send email to 
>> >> > [email protected].
>> >> > For more options, visit this group 
>> >> > athttp://groups.google.com/group/web2py?hl=en.
>>
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "web2py-users" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to 
>> > [email protected].
>> > For more options, visit this group 
>> > athttp://groups.google.com/group/web2py?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/web2py?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to