class Constituency < ActiveRecord::Base
has_many :votes
end
class Vote <ActiveRecord::Base
belongs_to :constituency
end
我有一个投票数据库,每个投票都有布尔属性“valid_vote”。 我想知道每个选区有多少票(百分比),但只计算有效票数。所以100%是所有投票,其中valid_vote == true。 任何想法我应该怎么写呢?
答案 0 :(得分:3)
要获得所有投票的有效投票百分比:
all_votes_count = constituency.votes.count
valid_votes_count = constituency.votes.where(valid_vote: true).count
if all_votes_count > 0
percent = valid_notes_count / all_votes_count
else
puts "no votes"
end
答案 1 :(得分:2)
您可以使用以下单个SQL查询执行此操作:
h = votes.group(:valid_vote).count
percentage = 100.0 * h[true] / h.values.sum rescue 0