0

我有一个大表,其中有许多共享时间戳的记录。我想得到一个结果集,其中有一列按时间戳求和。我知道您如何可以简单地使用“总和”方法来获取列总数。但是,我需要按日期列分组。这远不那么明显。我知道我可以使用“find_by_sql”,但是编写代码会很糟糕,因为我必须为超过 20 列执行此操作。我认为 AR 必须有一些魔法才能做到这一点,这让我无法理解?

日期设置示例:

表/模型:游戏/游戏

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 个“分数”列来按时间戳求和。

我怎样才能简单地使用 AR 来做到这一点?提前致谢。

4

1 回答 1

0

行。它需要一些挖掘和玩耍,但我想通了。我希望找到比“find_by_sql”更好的东西,我做到了,但这并没有好多少。同样,知道我需要按时间戳对 20+ 列求和,这是上面示例上下文中的解决方案。

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

现在,这看起来还不错,但我必须在“选择”方法中输入 20+ SUM()。不会从“find_by_sql”中节省大量工作,但它可以工作。

于 2012-08-24T15:14:19.907 回答