Diese Abfrage
Message.where("message_type = ?", "incoming").group("sender_number").count
wird mir einen Hash zurückgeben.
OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}
Jetzt möchte ich nach Anzahl jeder Gruppe bestellen. Wie kann ich das innerhalb der Abfrage tun?
ruby-on-rails
ruby-on-rails-3
activerecord
sql-order-by
Mohit Jain
quelle
quelle
@test = Price.where('price is not null').group(:price_date).order('count_price asc').count('price')
, der erzeugtSELECT COUNT("prices"."price") AS count_price, price_date AS price_date FROM "prices" WHERE (price is not null) GROUP BY price_date ORDER BY count_price asc
Message.where(message_type: "incoming").group(:sender_number).order("count(*)").count
Message.where(message_type: "incoming").group(:sender_number).order(:count_all).count
Als ich das versuchte, gab mir Rails diesen Fehler
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
Beachten Sie, dass dort SELECT ... AS count_all steht
Also habe ich die Abfrage von @ Simons Antwort so aktualisiert, dass sie so aussieht, und sie funktioniert für mich
.order('count_all desc')
quelle
count_all
anstelle voncount_id
4.2.1 bewirkt ,.order("count_id desc")
funktioniert.