我创建了一个SQL查询并成功运行它。此查询返回每个组中具有最后一个transaction_time的记录。
Select s.id, s.location_id
From sales_transactions s
INNER JOIN (
Select location_id, MAX(transaction_time) AS lastest
From sales_transactions
Group By location_id) s1
ON s.location_id = s1.location_id
AND s1.lastest = s.transaction_time
我使用ActiveRecord :: Base.connection.execute成功运行上述查询。现在,我想将此SQL查询转换为Rails 3中的Active Record查询。我在这里搜索了很多问题,但是,由于我的子查询中的聚合函数,我无法找到解决方案。
答案 0 :(得分:0)
你可以这样做:
SalesTransaction.select('id', 'location_id', 'max(transaction_time) AS lastest').group(:location_id)
或稍微不同但结果相同(加快):
SalesTransaction.order(:transaction_time).group(:location_id)