【问题标题】:Difficulty with ActiveRecord query that does percentage calculation执行百分比计算的 ActiveRecord 查询的困难
【发布时间】:2011-11-23 20:25:39
【问题描述】:

我有一个 ActiveRecord 架构,PurchaseSummary,它是我继承的,我无法更改,如下所示:

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

【问题讨论】:

  • 我想用 ruby​​ 代码来做...每年最多查看 700 条记录,对吧?
  • 我简化了架构,有一个客户列,有很多客户。 ——

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


【解决方案1】:

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

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

【讨论】:

  • 这似乎没有考虑到第一笔金额需要有一个 where 子句将其限制为 coupon_used = true。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多