如何从where语句中订购结果

时间:2014-02-19 12:49:27

标签: sql ruby-on-rails ruby

我有一个投票模型和一个展示位置模型,可以跟踪每个月末员工在投票结果中的完成情况。

投票架构

create_table "votes", :force => true do |t|
 t.integer  "phone_id",    :limit => 8
 t.integer  "employee_id"
 t.integer  "score"
end

展示位置架构

create_table "placements", :force => true do |t|
 t.integer  "employee_id"
 t.date     "month"
 t.integer  "votes_count", :default => 0
 t.integer  "position"
 t.integer  "total_score", :default => 0
end

我可以按照这样的特定月份的大多数投票顺序检索展示位置:

business.placements.where(month: month).order('votes_count desc')

我希望按照平均分数(而不是大多数选票)的顺序获得展示位置。

平均分数可以这样计算出来:

average_score = placement.total_score/placement.votes_count

我如何通过average_score命令我的where语句?

2 个答案:

答案 0 :(得分:2)

试试这个

business.placements.where(month: month).order('total_score / votes_count desc')

答案 1 :(得分:0)

这是一个很长的镜头,但尝试

business.placements.where(month: month).select('placements.*, (placements.total_score/placements.votes_count) AS average_score').order('average_score')