Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In my app I want to see the average paper use weight for my users which registers to the Heavyclass.

The user model has_many :papers and the paper model belongs_to :user

here is what I got so far: @heavy_users_testing = User.where(industry_type: 'Heavy').joins(:papers).where("papers.paper_type = 'Officepaper'").pluck(:paper_weight)

I'm not sure where to but the active record .average to get the average Officepaper weight for users in the Heavy category?

Can someone advise me please?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
213 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use the sql avg function inside pluck

@heavy_users_testing = User.where(industry_type: 'Heavy')
  .joins(:papers)
  .where(papers: { paper_type: 'Officepaper' } )
  .pluck('avg(paper_weight)')

If you want/need the average for EACH user, you need to do a group

@heavy_users_testing = User.where(industry_type: 'Heavy')
  .joins(:papers)
  .where(papers: { paper_type: 'Officepaper' } )
  .group(:user_id)
  .pluck('avg(paper_weight)')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...