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

时间:2011-11-23 20:25:40

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

我有一个ActiveRecord架构,PurchaseSummary,我继承了,我不能改变它看起来像这样:

purchase_summaries
    date date_of_purchase
    integer number_of_purchases
    boolean coupon_used
例如,对于11月1日,有800次购买,500次没有优惠券,300次有优惠券,11月2日,600次购买没有优惠券,100次购买,因此数据库中的行看起来像这样: / p>
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

1 个答案:

答案 0 :(得分:0)

不是最优化的方式,但您可以执行以下操作:

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