2014-09-05 22 views
1

我將如何使用Rails ActiveRecord來編寫類似於此的查詢?如何使用聚合函數並使用Rails ActiveRecord選擇特定列?

select 
    table1.category as "Collection", 
    count(table4.category) as "Totals" 
from 
    table1 
group by table1.name 
order by "Totals" desc 

這裏的目標是簡單報告表中的類別數量。我已經嘗試過.select().count()的一些排列,但是我的新手太棒了。 =/

如果我提供了預期的結果集,這可能會有所幫助。喜歡的東西:

| Collection | Totals | 
| ---------- | ------ | 
| category1 |  10 | 
| category5 |  9 | 
| category8 |  5 | 
| category3 |  3 | 

回答

1
Collection.pluck(:category).inject(Hash.new(0)) { |h, e| h[e] += 1 ; h } 
+0

我誤解你的問題,原來...... – 2014-09-05 15:15:57

+0

有趣。所以,似乎沒有AR equiv,呃?據我瞭解,你將查詢中的所有記錄都放入一個新的Hash中,同時迭代每條記錄並添加到Hash值中? – jktravis 2014-09-05 15:46:02

+0

你完全正確。查詢只是返回一個包含所有類別的數組,所以至少你沒有創建一堆Collections。我想不出有什麼方法可以更好地完成AR(或者完全不用我的頭)... – 2014-09-05 15:59:34

相關問題