2012-08-23 77 views
0

我有一個包含許多共享時間戳的記錄的大表。我想得到一個結果集,其中有一個由時間戳記組成的列。我看到你可以簡單地使用'sum'方法來獲得一列總數。但是,我需要按日期列進行分組。這遠不那麼明顯。我知道我可以使用'find_by_sql',但編碼會很糟糕,因爲我必須爲20多列做這件事。我認爲AR必須有一些魔術來做到這一點逃避我?在Rails 3中按日期總結記錄ActiveRecord

日期設置例如:

表/型號:/遊戲

player_name, points_scored, game_date 
john, 20, 08-20-2012 
sue, 30, 08-20-2012 
john, 12, 08-21-2012 
sue, 10, 08-21-2012 

什麼,我想在我的結果看到的是:

game_date, total_points 
08-20-2012, 50 
08-21-2012, 22 

這裏是一個最原始的例子是什麼SQL查詢將如下所示:

SELECT game_date, SUM(points_scored) 
FROM games 
GROUP BY game_date 

請注意,我實際上有20個'score'列以時間戳記SUM。

我該如何簡單地使用AR來做到這一點?提前致謝。

回答

0

好的。它花了一些時間挖掘並玩耍,但我明白了。我希望能找到比'find_by_sql'更好的東西,但我的確沒有那麼好。再一次,我知道我需要通過時間戳SUM 20+列,這裏是上述例子中的解決方案。

results = Game.select('game_date, SUM(points_scored) as "points_scored"').group('game_date') 

現在看起來不那麼糟糕,但我必須在'select'方法中鍵入20+ SUM()。不會從'find_by_sql'保存大量的工作,但它可以工作。