"Сортировать по" результат "group by" count?
Этот запрос
Message.where("message_type = ?", "incoming").group("sender_number").count
вернет мне хэш.
OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}
Теперь я хочу заказать по подсчету каждой группы. Как я могу сделать это в запросе.
Ответы
Ответ 1
Самый простой способ сделать это - просто добавить предложение заказа в исходный запрос. Если вы дадите методу count конкретное поле, он будет генерировать выходной столбец с именем count_ {column}, который может быть использован в sql, сгенерированном путем добавления вызова заказа:
Message.where('message_type = ?','incoming')
.group('sender_number')
.order('count_id asc').count('id')
Ответ 2
Когда я это пробовал, рельсы дали мне эту ошибку
SQLite3::SQLException: no such column: count_id: SELECT COUNT(*) AS count_all, state AS state FROM "ideas" GROUP BY state ORDER BY count_id desc LIMIT 3
Обратите внимание, что он говорит SELECT... AS count_all
Итак, я обновил запрос от ответа @Simon, чтобы выглядеть так, и он работает для меня.
.order('count_all desc')