2013-09-16 24 views
1

我有一個名稱,大陸,人口和其他一些領域的簡單國家表。如何使用ActiveRecord進行多次計算

我試圖執行使用ActiveRecord

以下MySQL查詢

SELECT COUNT(*),SUM(人口),AVG(人口)的國家,其中大陸= '亞洲'

如何我應該去解決它嗎?

我已經試過:

Country.where(:大陸=> '亞洲')計數()

Country.where。(:大陸=> '亞洲')和(:人口)

Country.where(:大陸=> '亞洲')的平均(:人口)

所有工作都獨立,他們都回數(不是ActiveRelation對象),這意味着你不能做像

Country.where(:大陸=> '亞洲')數()之和。(:人口)。平均(:人口)

+0

你真的想收到的國家,即同時計數,分組和平均? :) –

+0

@ lol007,我想找到亞洲國家的數量,亞洲的總人口和亞洲國家的平均人口 – Varun

回答

0

你可以嘗試某事像:

ActiveRecord::base.connection.execute('SELECT count(*), SUM(population), AVG(population) FROM countries where continent='Asia') 

這將返回散列:

{'count(*)': count, ... } 
+1

感謝兄弟,但我正在尋找一種方法來遵循Rails 3 activerecord句法。找到了。 – Varun

3

找到了解決辦法:

結果= Country.select(「計數(*)作爲NUM_COUNTRIES,總和(人口)爲total_population,AVG(人口)爲average_population)。凡(:大陸=>'asia')。to_a [0 ]

,它允許你再訪問結果像這樣: result.num_countries,result.total_population和result.average_population