复杂的rails SQL查询

时间:2015-06-18 19:21:58

标签: sql ruby-on-rails ruby postgresql activerecord

首先,用户有很多age_demographics。 AgeDemographic对象如下所示:

#<AgeDemographic id: 4384, user_id: 799, range: "35 - 49", percentage: 3.2, created_at: "2015-05-22 04:17:10", updated_at: "2015-05-22 04:17:10">

我正在建立一个用户搜索工具,其中有人会选择他们想要定位的多个年龄段(例如"12 - 17""18 - 24")。我需要选择拥有年龄人口统计对象集合且总百分比大于50%的用户。

这就是我的开始:

 User.joins(:age_demographics).where("age_demographics.range IN (?)", ["12 - 17", "18 - 24", "25 - 34"])

但我无法弄清楚如何将age_demographics的百分比总和与where子句联系起来。

如果这完全没有意义,请告诉我。

1 个答案:

答案 0 :(得分:2)

您可以使用havinggroup方法:

User.joins(:age_demographics)
    .where("age_demographics.range IN (?)", ["12 - 17", "18 - 24", "25 - 34"])
    .group("users.id")
    .having("sum(percentage) >= 50")