works perfectly.  thanks so much for the quick response and explanation.

On Tuesday, March 27, 2012 6:43:45 PM UTC-7, Anthony wrote:
>
> On Tuesday, March 27, 2012 6:25:16 PM UTC-4, go94025 wrote:
>>
>> Hi - new to Web2py and the group.  I'm building an app that will need to 
>> perform Sum and Max against large sets of data.  As I'm getting familiar 
>> with the DAL, I've tried the following (and other combinations) rather than 
>> fall back to db.executesql.  
>>
>> I'm getting the correct result but can't figure out a way to get only the 
>> result number (68) without the (SUM(rates.val02).  Probably missing 
>> something basic but I've tried a lot of combinations and can't seem to get 
>> there.
>>
>> Thanks in advance.
>>
>> Model-
>> db.define_table('rates',
>> Field('rate_name', 'string'),
>> Field('val01', 'integer'),
>> Field('val02', 'integer'),
>>
>> Controller-
>> def sum1():
>>     query = db.rates.val02.sum()
>>     return dict(sum1 = db().select(query))
>>
>> View-
>> {{=sum1}}
>>
>> Result-
>> SUM(rates.val02)68
>>
>
> The key for the sum is the serialized SQL generated by the DAL, which is 
> "SUM(rates.val02)" (note, technically it is adapter-specific). However, you 
> can use the original object as the key, and it will be serialized to the 
> actual key for you. So, just do:
>
> return dict(sum1 = db().select(query).first(), query=query)
>
> and in the view:
>
> {{=sum1[query]}}
>
> That is equivalent to:
>
> {{=sum1[str(query)]}} 
>
> which is equivalent to:
>
> {{=sum1['SUM(rates.val02)']}} 
>
> Note, I changed sum1 to call the .first() method, which extracts the 
> first (and only) row from the Rows object.
>
> Anthony
>

Reply via email to