在ruby中用max和groupby重写sql语句

时间:2017-09-16 11:35:04

标签: ruby-on-rails ruby

我有我的sql视图:

SELECT
    `reports`.`date` AS `date`,
    `reports`.`book_title` AS `book_title`,
    max(
        `reports`.`royalty_type`
    ) AS `royalty_type`,
    max(
        `reports`.`avg_list_price`
    ) AS `avg_list_price`
FROM
    `reports`
GROUP BY
    `reports`.`date`,
    `reports`.`book_title`,
    `reports`.`marketplace`

据我了解,按日期对结果进行分组,然后按book_title然后按市场分组,然后在这个小的子组中选择最大royalty_typeavg_list_price

如何在rails activerecord中重写此内容? 我不知道如何在activerecord中的这个小组中选择max。

1 个答案:

答案 0 :(得分:2)

试试这个

Report.group(:date, :book_title, :marketplace).select('date, book_title, MAX(royalty_type) AS royalty_type, MAX(avg_list_price) AS avg_list_price')