0

タイムスタンプを共有する多くのレコードを含む大きなテーブルがあります。タイムスタンプで合計された列を持つ結果セットを取得したいと考えています。「sum」メソッドを使用して列の合計を取得する方法がわかります。ただし、日付列でグループ化する必要があります。これはあまり明白ではありません。「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

Ok。掘り下げて遊んでみましたが、わかりました。「find_by_sql」よりも優れたものを見つけたいと思っていましたが、そうしましたが、それほど優れているわけではありません。繰り返しますが、タイムスタンプで 20 以上の列を合計する必要があることを知っているので、上記の例のコンテキストでの解決策を次に示します。

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

これはそれほど悪くはありませんが、「select」メソッド内に 20 個以上の SUM() を入力する必要があります。「find_by_sql」から多くの作業を保存するわけではありませんが、機能します。

于 2012-08-24T15:14:19.907 に答える