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.

