You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 4 ActiveRecord查询需求:按日期汇总Subscription Versions的MRR总和

嘿,我来帮你搞定这个MRR汇总查询!

首先,你的核心需求是按日期分组,汇总所有订阅版本的MRR总和——从示例来看,就是把每个日期下所有订阅的对应版本MRR加总,对吧?

那咱们来完善你的ActiveRecord查询:

基础版查询(同时获取日期与对应总MRR)

# 执行后会得到包含日期和总MRR的结果集
summary = @subscriptions.joins(:subscription_versions)
                        .group('subscription_versions.date')
                        .select('subscription_versions.date, SUM(subscription_versions.mrr) AS total_mrr')
                        .order('subscription_versions.date')

每一条结果都会包含date(日期)和total_mrr(当日总MRR)两个字段,方便你后续展示或处理。

直接获取纯总和数组(匹配你的示例结果)

如果你只需要像示例那样的纯数值数组([200, 400, 1200]),可以用pluck简化查询:

mrr_totals = @subscriptions.joins(:subscription_versions)
                           .group('subscription_versions.date')
                           .order('subscription_versions.date')
                           .pluck('SUM(subscription_versions.mrr)')

pluck会直接提取SUM计算后的数值,按日期排序后就是你想要的结果。

几个关键注意事项

  1. 表名/字段名校验:确保你的子表确实是subscription_versions(符合Rails单数父表名+后缀的惯例),如果实际表名是subscriptions_versions(复数父表名),记得把查询里的表名替换成对应名称。
  2. 日期类型适配:如果date字段是datetime类型(包含时分秒),你需要按纯日期分组(避免同一日期不同时间被拆分),以PostgreSQL为例,修改后的查询如下:
    mrr_totals = @subscriptions.joins(:subscription_versions)
                               .group('DATE(subscription_versions.date)')
                               .order('DATE(subscription_versions.date)')
                               .pluck('SUM(subscription_versions.mrr)')
    
    MySQL环境可以用DATE(subscription_versions.date)或DATE_FORMAT(subscription_versions.date, '%Y-%m-%d')替代。
  3. 包含无版本的订阅:如果需要统计那些还没有版本的订阅(MRR按0计算),可以把joins换成left_outer_joins,并用COALESCE把空值转为0:
    mrr_totals = @subscriptions.left_outer_joins(:subscription_versions)
                               .group('subscription_versions.date')
                               .order('subscription_versions.date')
                               .pluck('COALESCE(SUM(subscription_versions.mrr), 0)')
    

这样应该就能完美匹配你的需求啦!

内容的提问来源于stack exchange,提问作者Dmitry Gusev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:02:34