我的SQL查询是
SELECT MAX(sale_money)
FROM (
SELECT SUM(sale_money) sale_money
FROM sales
WHERE MONTH(created_at) = 5
GROUP BY user_id
) t
我在Rails 4代码中编写子查询:
record = Sale.select("SUM(sale_money) AS sale_money").where("MONTH(created_at) = 5").group(:user_id)
有人可以教我根据max_record
或其他查询查询record
,max_record = Sale.find_by_sql(my_raw_sql)
或max_record = Sale.where(my_raw_sql)
答案 0 :(得分:1)
是的,可以使用Activerecord form方法完成相同的操作。
Sale.from(Sale.select("SUM(sale_money) AS sale_money")
.where("MONTH(created_at) = 5")
.group(:user_id), :t
)
.select("MAX(t.sale_money) as sale_money")
但是,你可以这样做:
Sale.select("SUM(sale_money)")
.where("MONTH(created_at) = 5")
.group(:user_id)
.order("SUM(sale_money) DESC")
.limit(1)
上述内容不需要2 SELECT 查询。