# Select SUM(?) Query

**URL:** <https://www.ruby-forum.com/t/select-sum-query/82291>\
**Category:** Rails\
**Created:** [December 30, 2005, 5:00am UTC](https://www.ruby-forum.com/t/select-sum-query/82291 "2005-12-30T05:00:00Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmarkow](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bc8723/32.png) [@dmarkow](https://www.ruby-forum.com/u/dmarkow)\
**Post date:** [December 30, 2005, 5:00am UTC](https://www.ruby-forum.com/t/select-sum-query/82291/1 "2005-12-30T05:00:00Z")

</div>

* * *

Rails mailing list  
removed\_email\_address@domain.invalid  
[http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

---

<div class="post-metadata">

**Author:** ![dmarkow](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bc8723/32.png) [@dmarkow](https://www.ruby-forum.com/u/dmarkow)\
**Post date:** [December 30, 2005, 5:27am UTC](https://www.ruby-forum.com/t/select-sum-query/82291/2 "2005-12-30T05:27:04Z")

</div>

Make a quick test in Rails console, you will understand the result of  
find\_by\_sql. Or, you can have a look at  
Calculation[http://techno-weenie.net/blog/main/266/introducing-calculations](http://techno-weenie.net/blog/main/266/introducing-calculations)plugin.  
Once installed, you can use something like:

Order.calculate(:sum, :cost, :group =\> :country,  
:having =\> ‘sum(cost) \> 50’)

# The document uses :group\_by, but it should be :group

Easy enough?

On 12/29/05, Dylan M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> When using PHP, I was able to enter a query against my list of
> 
> ```

invoices such as :

> Select SUM(amount) from invoices where project=“123”
> 
> This would give me the total amount of all invoices for project 123.
> 
> In rails, how would I do this? I tried using “find\_by\_sql,” but couldn’t  
> figure out how to extract the results out of this. Thanks!

---

<div class="post-metadata">

**Author:** ![dmarkow](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bc8723/32.png) [@dmarkow](https://www.ruby-forum.com/u/dmarkow)\
**Post date:** [December 30, 2005, 6:54am UTC](https://www.ruby-forum.com/t/select-sum-query/82291/3 "2005-12-30T06:54:29Z")

</div>

Dylan M. \<dylan@…\> writes:

> Select SUM(amount) from invoices where project=“123”

Try:  
SELECT SUM(amount) as totalamount FROM invoices WHERE project=“123”

In your result hash, grab the totalamount field.

-damon

> **[Damon Clinkscales](https://damonc.onuniverse.com/)**
>
> Damon Clinkscales

---

<div class="post-metadata">

**Author:** ![dmarkow](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bc8723/32.png) [@dmarkow](https://www.ruby-forum.com/u/dmarkow)\
**Post date:** [December 30, 2005, 5:54pm UTC](https://www.ruby-forum.com/t/select-sum-query/82291/4 "2005-12-30T17:54:51Z")

</div>

On 12/29/05, Dylan M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> When using PHP, I was able to enter a query against my list of invoices  
> such as :
> 
> Select SUM(amount) from invoices where project=“123”
> 
> This would give me the total amount of all invoices for project 123.
> 
> In rails, how would I do this? I tried using “find\_by\_sql,” but couldn’t  
> figure out how to extract the results out of this. Thanks!

One way is:  
Invoice.connection.select\_value “select sum(amount) from invoices  
where project\_id = 123”  
Unlike find\_by\_sql, this doesn’t return an instance of ‘Invoice’… it  
simply returns the value from the query, or nil if there were no  
results

If you’re expecting an integer as the result (e.g. count(\*) from blah  
where something), you can use Invoice.count\_by\_sql()  
That would give you inaccurate results for ‘amount’, though, if  
pennies are involved.
