1. ホーム
  2. ruby-on-rails

[解決済み] 「group by "の "Order by "の結果は?

2023-07-08 04:03:30

質問

このクエリ

Message.where("message_type = ?", "incoming").group("sender_number").count

はハッシュを返します。

OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}

ここで、各グループのカウント数で並べ替えたいと思います。どのように私はクエリの中でそれを行うことができます。

どのように解決するのですか?

最も簡単な方法は、元のクエリに順序句を追加するだけです。countメソッドに特定のフィールドを与えると、count_{column}という名前の出力カラムが生成され、これを順序の呼び出しを追加して生成したSQLで使用することができます。

Message.where('message_type = ?','incoming')
       .group('sender_number')
       .order('count_id asc').count('id')