计算给定年龄范围内的用户 - 轨道上的红宝石

时间:2013-11-06 08:18:22

标签: sql ruby-on-rails postgresql charts ruby-on-rails-3.2

我希望能够根据特定年龄范围对用户进行分组。然后得到他们可以用来绘制条形图的计数。 ë

这个陈述能够绘制他们年龄的图表,但它是每个用户的年龄。这是我想要消除的。如果您想知道我正在使用chartkick制作图表。

<%= bar_chart User.group("date_trunc('year', age(dob))").count, {library: {title: "User's Age"}} %>

我希望将年龄返回为:

<%= bar_chart [["Below 10", users_with_ages_lying_in this_range.count],
          ["10-19", users_with_ages_lying_in this_range.count],
          ["20-29", ],
          ["30-39", ],
          ["40-49", ],
          ["above 50",]], {library: {title: "User's Age"}} 
%>

简而言之,我希望这行代码User.group("date_trunc('year', age(dob))").count仅返回给定年龄段的用户。

如果您有任何更好的想法,我将不胜感激。 我正在使用postgres DB

1 个答案:

答案 0 :(得分:1)

我有类似的需要来查找范围内的事件。

我在模型上创建了一个类方法:

  def self.in_range(start_range, end_range)
    where "((start_date <= ?) and (end_date >= ?))", end_range, start_range
  end

使用如下:

events.in_range(start_range, end_range).order('start_date ASC')

我确信可以使用age而不是start_date和end_date创建类似的。