品質フィールドを含むユーザーモデルがあります。フィールドのデータ型はfloatです。
次に、すべてのユーザーを品質範囲に従って次のようにグループ化します。
[65 - 75],[75 - 85], [85 - 95] and [95 - 100]
注:あるグループでは65〜75、別のグループでは75〜85の品質のすべてのユーザーが必要です。
ActiveRecordでこれを達成するにはどうすればよいですか。
ありがとう
品質フィールドを含むユーザーモデルがあります。フィールドのデータ型はfloatです。
次に、すべてのユーザーを品質範囲に従って次のようにグループ化します。
[65 - 75],[75 - 85], [85 - 95] and [95 - 100]
注:あるグループでは65〜75、別のグループでは75〜85の品質のすべてのユーザーが必要です。
ActiveRecordでこれを達成するにはどうすればよいですか。
ありがとう
さてあなたはこのような機能をgroup
使うことができます: having
ActiveRecord
Model.select(:quality).group(:quality).having("quality > 65 AND quality < 75")
Model.select(:quality).group(:quality).having("quality > 75 AND quality < 85")
Model.select(:quality).group(:quality).having("quality > 85 AND quality < 95")
Model.select(:quality).group(:quality).having("quality > 95 AND quality < 100")
User.where(:quality => (65..75))
User.where(:quality => (75..85))
User.where(:quality => (85..95))
User.where(:quality => (95..100))
または、単一のクエリが必要な場合は、次の 3 つのオプションがあります。
文字列形式の使用
User.where("(quality >= 65 AND quality <= 75) OR (quality >= 75 AND quality <= 85) OR (quality >= 85 AND quality <= 95) OR (quality >= 95 AND quality <= 100)").group(:quality)
OR 句を使用して SQL を記述する