0

以下是付款表中的列:

user_id, amount, paid (boolean)

在 Rails 中,我们可以按如下方式进行 SQL 分组:

grouping = Payment.all(:select => "sum(amount) AS total", :group => "user_id")

我们的问题是在相同的 SQL 中,如何计算已支付款项的总额?这是我们想要在伪代码中执行的操作:

grouping = Payment.all(:select => "sum(amount) as total, sum(amount if paid) as total_paid", :group => 'user_id')

我们需要在ONESQL 中对这两个求和。谢谢您的帮助。

4

1 回答 1

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)
于 2013-08-01T04:14:10.380 回答