gpt4 book ai didi

ruby-on-rails - 计算月份统计

转载 作者:行者123 更新时间:2023-11-29 11:40:52 25 4
gpt4 key购买 nike

我有一个捐款表,我试图在其中计算每个月的总金额。几个月没有任何捐赠,我希望结果返回 0。

这是我当前的查询:

Donation.calculate(:sum, :amount, :conditions => { 
:created_at => (Time.now.prev_year.all_year) },
:order => "EXTRACT(month FROM created_at)",
:group => ["EXTRACT(month FROM created_at)"])

返回:

{7=>220392, 8=>334210, 9=>475188, 10=>323661, 11=>307689, 12=>439889}

有什么想法可以捕获空缺的月份吗?

最佳答案

通常情况下,您会加入一个日历表(或 PostgreSQL 中的 generate_series)来获取缺失的月份,但使用 Rails 最简单的方法是将您的结果合并到零散列中;像这样:

class Donation
def self.by_month
h = Donation.calculate(:sum, :amount, :conditions => {
:created_at => (Time.now.prev_year.all_year) },
:order => "EXTRACT(month FROM created_at)",
:group => ["EXTRACT(month FROM created_at)"])
Hash[(1..12).map { |month| [ month, 0 ] }].merge(h)
end
end

然后只需调用类方法 h = Donation.by_month 即可获得结果。

关于ruby-on-rails - 计算月份统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com