新手问题 有关逻辑的问题,应该从哪里下手。主要思路是什么

sjzg001 · 2014年08月13日 · 最后由 helloqidi 回复于 2014年08月21日 · 1921 次阅读

我要循环 user 表,把积分 0~100,100~200,200~300......统计每个阶段的人数

users_count=User.select('积分').group('积分').count
u100 , u200, u300 = 0,0,0 #分别是0-100,100-200,200-300
users_count.each do |k,v|
 if k <= 100
 u100 += v
elsif k<=200 && k>100
 u200 += v
elsif k<=300 && k>200
 u300 += v
end
User.where("data > 0 and data < 100").count

这个可以不

@fayake @Msms 积分 0~100,100~200,200~300.......

#3 楼 @sjzg001

users_count=User.select('积分').group('积分').count
u_number = Hash.new(0)
user_count.each{|k,v| u_number[(k/100).to_i] += v}
u_number[0]是0-100 以内的
u_number[1]是100-200 以内的
u_number[2]是200-300 以内的

其实也就是一个 sql 啦。。。

select (score / 100) r, count(*) from users group by r

MongoDB 可以这样

db.user.mapReduce(
  function(){ emit(Math.round(this.current_point/100), 1); },
  function(key, values) { return Array.sum(values) },
  {out :"user_totals"}
)
需要 登录 后方可回复, 如果你还没有账号请 注册新账号