使用ActiveRecord查询进行百分比计算的难度

我有一个ActiveRecord模式,PurchaseSummary,我inheritance了,我不能改变,看起来像这样:

purchase_summaries date date_of_purchase integer number_of_purchases boolean coupon_used 

例如,11月1日,有800次购买,500次没有优惠券,300次有优惠券,11月2日,600次购买没有优惠券,100次购买,因此数据库中的行如下所示:

 2011-11-01, 500, false 2011-11-01, 300, true 2011-11-02, 600, false 2011-11-02, 100, true 

例如,11/1的总购买量为800和11/2 700。

问题:我想构建一个每天返回的查询,使用优惠券的购买百分比,或

 2011-11-01, 0.375 2011-11-02, 0.142 

不是最优化的方式,但你可以这样做:

 select date_of_purchase ,sum(number_of_purchases) / (select sum(subquery.number_of_purchases) from purchase_summaries subquery where subquery.date_of_purchase = query.date_of_purchase and subquery.coupon_used = 1) * 100 as percentage from purchase_summaries query group by date_of_purchase