选择方法在Rails 4中没有产生正确的结果

时间:2013-07-20 04:36:54

标签: sql ruby-on-rails ruby

我已经搜索了几个小时试图找到解决方案。

我对此声明有疑问。它返回nil但它应该返回一个哈希值。

stats = stats.select("date, sum(attendance) as total_attendance")

我在我的控制台中运行它:

Stat.select("date, sum(attendance) as total_attendance")

以下是控制台的输出:

Stat.select("date, sum(attendance) as total_attendance")
  Stat Load (0.3ms)  SELECT date, sum(attendance) as total_attendance FROM "stats"
 => #<ActiveRecord::Relation [#<Stat id: nil, date: "2013-01-06">]>

我正在寻找的结果将是一个哈希:date =&gt; value和:total_attendance =&gt;值 喜欢

attendance: 31, date: "2013-06-30"

我也尝试过使用

Stat.group(:date).sum(:attendance)

但它返回一个散列,其中日期为关键字,总出勤率为值。

像这样:

Sun, 06 Jan 2013=>66, Sun, 13 Jan 2013=>65

谁能告诉我我做错了什么?我认为第一个陈述是正确的,但最重要的是我正在寻找合适的结果。

1 个答案:

答案 0 :(得分:1)

select语句需要几行结果,而sumcalculation,并且只为整个表生成一个结果(如果没有给出where语句)。因此,sum应与group一起使用,或直接在类级别使用:

Stat.sum(:attendance)

<强>更新

要获得您想要的哈希:

Stat.select('date, sum(attendance) as total_attendance').group(:date)

如果您没有按日期分组,结果将不正确。