以下是付款表中的列:
user_id, amount, paid (boolean)
在rails中,我们可以按如下方式进行SQL分组:
grouping = Payment.all(:select => "sum(amount) AS total", :group => "user_id")
我们的问题是在SAME SQL中,如何计算支付的总额?这是我们想要在伪代码中做的事情:
grouping = Payment.all(:select => "sum(amount) as total, sum(amount if paid) as total_paid", :group => 'user_id')
我们需要在ONE
SQL中进行这两个求和。谢谢您的帮助。
答案 0 :(得分:1)
您希望获得用户支付的总金额吗?
单向
payment.rb
中的
scope :paid_payments, where(paid: true)
controller
中的
user.payments.paid_payments.sum(:amount)
应该返还所有选定付款的总和。
另一种方式:
user.rb
中的
has_many :paid_payments, class_name: "Payment", :conditions => {:paid => true}
controller
中的:
user.paid_payments.sum(:amount)