Rails ActiveRecord: как запросить максимальное значение столбца A и сгруппировать по столбцу B? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу сделать что-то вроде

  Model.select(column_a: :maximum, :column_b).group_by(:column_b)

Я использую MySQL 5.6 и рельсы 5

Ответы [ 2 ]

0 голосов
/ 17 июля 2020

Это сработало для меня.

Model.select('MAX(column_a) AS column_a', :column_b).group(:column_b)

Если вы оставите максимальное значение как max или какое-либо другое имя, которое не присутствует в качестве атрибута в модели, вы не увидите значение в объекте, поскольку рельсы не будут отображать результат ни на что.

0 голосов
/ 17 июня 2020

Вы можете использовать свою функцию СУБД max и GROUP BY:

Model.select('MAX(column_a) AS max').group(:column_b)

Или используя метод ActiveRecord::Calculations#maximum плюс group:

Model.group(:column_b).maximum(:column_a)

Хотя результат отличается, поскольку он возвращает ha sh в следующей форме:

{ column_b => column_a, ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...