首页 > 解决方案 > 在 Active Record 中乘以列?

问题描述

有以下 sql 查询,我将如何翻译 Active Record 中两列的乘法?

SELECT plan_name, plan_price, count(plan_id), plan_price*count(plan_id) AS totalrevenue
FROM leads
INNER JOIN plans p ON leads.plan_id = p.id
WHERE lead_status_id = 5
GROUP BY plan_name, plan_price;

标签: ruby-on-railsactiverecord

解决方案


我会尝试这样的事情。

leads = Lead.joins(:plans).
    where(lead_status_id: 5).
    group(:plan_name, :plan_price).
    select('plan_name, plan_price, count(plan_id), plan_price * count(plan_id) AS totalrevenue')

leads.each { |lead| puts lead.totalrevenue }

笔记:

  1. 我不知道是joins(:plan)还是joins(:plans),这取决于你的联想
  2. 如果您甚至需要打电话给plan_id计数,我什至会为该字段命名
  3. 如果您打印整个对象,则不会显示类似的字段totalrevenue,因为它不是它的一部分,它是一个虚拟属性

推荐阅读