我已经搜索了几个小时试图找到解决方案。
我对此声明有疑问。它返回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
谁能告诉我我做错了什么?我认为第一个陈述是正确的,但最重要的是我正在寻找合适的结果。
答案 0 :(得分:1)
select
语句需要几行结果,而sum
是calculation,并且只为整个表生成一个结果(如果没有给出where
语句)。因此,sum
应与group
一起使用,或直接在类级别使用:
Stat.sum(:attendance)
<强>更新强>
要获得您想要的哈希:
Stat.select('date, sum(attendance) as total_attendance').group(:date)
如果您没有按日期分组,结果将不正确。