0

私の開発環境(SQLite)には、次のような機能メソッドがあります。

def self.ytd
Production.find(
    :all,
    conditions: ["year == ?", Time.now.year],
    select: "carrier_id, amount, SUM(amount) as sum_amount",
    group: :carrier_id
    )
end

:carrier_idこのメソッドは、列で構成されるテーブルを正常に検索し:amountます。:amount次に、グループ化されたものに基づいて列を合計します:carrier_id

Postgresqlを使用して本番環境に変換しようとしています。以下のコードはレコードを正常にグループ化しますが、合計することはできません:amount。私は方法を修正しようと.sum("productions.amount")しましたが成功しませんでした。簡単な解決策があると確信していますが、それは私をほのめかします..誰かが助けてくれますか?ありがとう

def self.ytd
Production.select("DISTINCT ON (productions.carrier_id) productions.carrier_id, productions.amount ")
               .where("productions.year = (?)", "#{Time.now.year}")
               .group("productions.amount, productions.carrier_id, productions.id")
end
4

1 に答える 1

2

削除DISTINCT ON、追加SUM(amount) as sum_amount、グループ化すると:carrier_id、目的の結果が得られました。

def self.ytd
Production.select("productions.carrier_id, SUM(amount) as sum_amount")
               .where("productions.year = (?)", "#{Time.now.year}")
               .group("productions.carrier_id")      
end
于 2013-03-26T03:08:01.880 に答える