将rails 3 mySQL查询转换为使用PostgreSQL

将rails 3 mySQL查询转换为使用PostgreSQL,mysql,sql,ruby-on-rails-3,postgresql,Mysql,Sql,Ruby On Rails 3,Postgresql,我知道mySQL和PostgreSQL对“groupby”选择器的理解有所不同,这要感谢这里发布的问题。然而,尽管我可能会尝试,但我无法使用Heroku(PostgreSQL)db实现以下(看似)简单的查询,尽管它在我的mySQL开发环境中运行良好: @trans_by_trip = @user.transactions.order("date").sum(:amount_cents, :group => :trip_id) 我读到,通过包含像“sum”这样的计算,group_by可以工

我知道mySQL和PostgreSQL对“groupby”选择器的理解有所不同,这要感谢这里发布的问题。然而,尽管我可能会尝试,但我无法使用Heroku(PostgreSQL)db实现以下(看似)简单的查询,尽管它在我的mySQL开发环境中运行良好:

@trans_by_trip = @user.transactions.order("date").sum(:amount_cents, :group => :trip_id)
我读到,通过包含像“sum”这样的计算,group_by可以工作,但实际上不行。我必须承认,我无法将查询转换为原始SQL

非常感谢您的帮助。

交易。订单(“日期”)
-这是在按日期对交易进行排序吗?如果是这样的话,这与将它们按不包括日期的内容分组的总和并不完全兼容。那么,试着简单地删除该条款


您可以要求结果按(SQL术语)
min(date)
排序,这将返回每次行程的结果,按该行程的第一个日期排序。或者
max(date)
等。不指定min或max会使结果不明确,这就是PostgreSQL拒绝它的原因。

实际上,order子句来自我最初的想法,即尝试以排序的日期顺序一次加载用户的所有事务,然后出于各种目的对它们执行其他操作:包括将它们视为选定对象,然后为另一个视图对它们进行重新分组和求和,从而只命中数据库一次。(事实上,第一部分,直到order子句,最初是在一个变量中。)虽然我现在认识到order子句在这个上下文中是不相关的,但我想如果它是善意的不必要的话,它会被忽略,事实上mySQL确实忽略了它。谢谢你的回复!