2017-09-19 15 views
1

私のsubscribersテーブルに私は電子メールが重複しているので、これらを数えたいと思います。私はRailsのコンソールでこれをやっている:Rails 5:グループとカウント後に注文できません

Subscriber.select("email, count(*)").group(:email).order("count (*) desc")これは私のPostgreSQLデシベルに次のクエリになり

SELECT email, count(*) FROM "subscribers" GROUP BY "subscribers"."email" ORDER BY count (*) desc

奇妙なことがあり、このクエリは時に正常に動作しますが、 dbから直接実行すると、Railsコンソールでは機能しません。

なぜでしょうか?

答えて

1

これは動作しますが、サブスクライバオブジェクトにその集約フィールドがなく、他のオブジェクトを抽出していません。これらのフィールド

subscribers.each { |s| puts s.email, s.counter } 
+0

グレートを抽出し、それを名前

subscribers = Subscriber.select("email, COUNT(*) AS counter").group(:email).order("COUNT (*) desc") 

を与えます!予約メソッドを避けるために 'count'の代わりに' counter 'と名前を付けましたか?ちょっと興味があるんだけど。 – bplmp

+0

私はそれについて考えなかったが、それはおそらく良い考えはカウントを避ける:) – Ursus

関連する問題