rails postgreSQL无法使此查询起作用(SUM,Group Order)

时间:2011-06-20 20:12:43

标签: ruby database ruby-on-rails-3 postgresql

当我在SQLite中尝试时,此查询有效:

Transaction.where(:paid => true).select("created_at, SUM(amount) amount").group("DATE(created_at)").order('created_at')

但是当我使用postgreSQL运行它时,它确实没有用。 下面是错误信息:

ActiveRecord::StatementInvalid: PGError: ERROR:  column "transactions.created_at" must appear in the GROUP BY clause or be used in an aggregate function : SELECT created_at, SUM(amount) as amount FROM "transactions" WHERE ("transactions"."paid" = 't') GROUP BY DATE(created_at) ORDER BY created_at

任何可以帮助我的人?​​

提前致谢

2 个答案:

答案 0 :(得分:1)

您必须在select子句中使用DATE(created_at),或在group by子句中使用created_at

答案 1 :(得分:1)

您选择created_at, sum(amount),按created_at排序,但按date(created_at)进行分组。除了join / where子句之外,后者将禁止使用除字段和聚合之外的任何内容。

要修复,请按created_at分组,或按date(created_at)而不是created_at选择顺序。