このクエリ"group by"の結果の "順序"?
Message.where("message_type = ?", "incoming").group("sender_number").count
は私のハッシュを返します。
OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}
今、私は各グループのカウントで注文したいと思います。どのようにしてクエリ内でそれを行うことができますか?
このクエリ"group by"の結果の "順序"?
Message.where("message_type = ?", "incoming").group("sender_number").count
は私のハッシュを返します。
OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}
今、私は各グループのカウントで注文したいと思います。どのようにしてクエリ内でそれを行うことができますか?
これを行う最も簡単な方法は、元のクエリに注文句を追加することです。あなたがカウント方法に特定のフィールドを与える場合は、注文の呼び出しを追加することによって生成されたSQLで使用することができ、名前のcount_ {列}と出力列を生成します。
Message.where('message_type = ?','incoming')
.group('sender_number')
.order('count_id asc').count('id')
私はこれを試したときは、レールは、それがSELECTは... AS count_all
は、だから私はこのように見えるようにサイモンの答え@からクエリを更新言うこと
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
お知らせ私は、このエラーを与え、それは私
のために働きます
いいえ、それは私のために働いていません.. –
どのデータベースエンジンを使用していますか?どのバージョンのレール、そして生成されたSQLは何ですか?私はレール3.0.7でうまく動作するテストケース(別のモデル)を得ました。 ( 'price_date).order(' count_price asc ')。count(' price ') 'これは' SELECT COUNT( "prices"。 "price"を生成します。 ")AS count_price、price_date AS price_date FROM" prices "WHERE(価格はnullではありません)GROUP BY price_date ORDER BY count_price asc' –
ありがとうございます。これは私が前にそれをやっていた方法と比較して、私の質問からずっと時間を節約しました!最も重要なレッスン:countメソッドが 'count_ {column}'という名前の出力列を生成することがわかった!ありがとうございました! – Yavin4