Максимум в группе по запросу активной записи - PullRequest
3 голосов
/ 24 июня 2011

У меня есть модель, которая имеет два атрибута (я показываю только два, поскольку нужны только эти два столбца)

MyModel


place_id ------------------------ user_id

1 ---------------------------------- 1

1 ----------------------------------2

1 ---------------------------------- 2

3---------------------------------- 3

3 ---------------------------------- 2

3 ---------------------------------- 3

3 ---------------------------------- 1

Я хочу выбрать группу по максимальному количеству записей.По сути, я хочу получить данные для определенного места, для которого у пользователя максимальное количество записей, например, для place_id 1 пользователь 2 имеет максимальные результаты, а для места 3 пользователь 3 имеет максимальные результаты.

1 Ответ

5 голосов
/ 25 июня 2011

Если вы указали место сначала, вы можете сделать:

MyModel.where("place_id=?",place_id).
        group("place_id,user_id").order("count(user_id) DESC").first

Если вы хотите получить все максимумы одновременно, то удалите предложение where и выполните итерацию по вашему набору результатов, беря только первую запись для каждого отдельного place_id. Или вы можете добавить отдельное заявление к приведенному выше. Как то так?

MyModel.select("DISTINCT(place_id)").
        merge(MyModel.group("place_id,user_id").order("count(user_id) DESC"))

Удачи!

...