0

優先順位はユーザーに帰属します。優先度には4つの期間(列挙型)を含めることができます-:day、:week、:month、:quarter

期間の値が:day、:week、:month、:quarterに等しい優先度を持つ一意のユーザーの数を取得するアクティブレコード.countステートメントを書き込もうとしています。

したがって、基本的には、期間のこれらの値のそれぞれについて、少なくとも1つの優先順位を持っている人の数を知りたいと思います。ありがとう!

4

2 に答える 2

0

4つのリクエストでそれを行う必要があります。期間ごとに1つずつ。

User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
于 2012-04-06T07:50:55.160 に答える
0
Priority.group('period').count('user_id', :distinct => true)

ユーザー数に期間のハッシュを提供する必要があります。期間でグループ化するcountと、単一の値ではなくハッシュが返され、カウントを明確にすることで、ユーザーが二重にカウントされないようにします。

Explain Planを確認しますが、このクエリを適度に高速にするには、期間列にインデックス(おそらく[period、user_id]インデックス)が必要になるでしょう。

于 2012-04-06T08:06:47.363 に答える