優先順位はユーザーに帰属します。優先度には4つの期間(列挙型)を含めることができます-:day、:week、:month、:quarter
期間の値が:day、:week、:month、:quarterに等しい優先度を持つ一意のユーザーの数を取得するアクティブレコード.countステートメントを書き込もうとしています。
したがって、基本的には、期間のこれらの値のそれぞれについて、少なくとも1つの優先順位を持っている人の数を知りたいと思います。ありがとう!
優先順位はユーザーに帰属します。優先度には4つの期間(列挙型)を含めることができます-:day、:week、:month、:quarter
期間の値が:day、:week、:month、:quarterに等しい優先度を持つ一意のユーザーの数を取得するアクティブレコード.countステートメントを書き込もうとしています。
したがって、基本的には、期間のこれらの値のそれぞれについて、少なくとも1つの優先順位を持っている人の数を知りたいと思います。ありがとう!
4つのリクエストでそれを行う必要があります。期間ごとに1つずつ。
User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
Priority.group('period').count('user_id', :distinct => true)
ユーザー数に期間のハッシュを提供する必要があります。期間でグループ化するcount
と、単一の値ではなくハッシュが返され、カウントを明確にすることで、ユーザーが二重にカウントされないようにします。
Explain Planを確認しますが、このクエリを適度に高速にするには、期間列にインデックス(おそらく[period、user_id]インデックス)が必要になるでしょう。