2013-12-23 55 views
0

如何將這個SQL轉換成Ruby/Rails?如何在Rails中按數量進行分組和排序?

select tag, count(*) c from tags group by tag order by c desc; 

我發現我可以這樣做:

Post.select(:user_id).group(:user_id).count 
Post.count(group: :user_id) 
Post.all(group: :user_id, select: "user_id, count(*) as count") 
Post.find(:all, select: "user_id, count(*) as count", group: :user_id) 

#1回哈希值。 #2,#3和#4給出了棄用警告。 (我使用的職位,因爲我沒有爲標籤任何數據。)

回答

2

嘗試:

Tag.select("tag, count(*) as total_count").group("tag").reverse_order 

欲瞭解更多信息,請閱讀:http://guides.rubyonrails.org/active_record_querying.html

+0

我不得不調整它:'標籤。 select(「tag,count(*)as total_count」)。group(「tag」)。order(「total_count」)。reverse_order' – Chloe

+0

它適合你嗎? –

+0

'reverse_order'不接受參數。我以:self.tags.select(:tag,「count(*)as count」)結束:group(:tag).order(count::desc).map {| t | t.tag} .join('')'。謝謝! – Chloe

相關問題