2016-05-13 71 views
2

我有一个模型账户,可以看到活动增加的余额。有没有一种方法来组合并获得该周的最终平衡?这里有一个例子:如何将帐户余额按几周分组?

帐户

created_at: 31 April 2016, balance: 8000 # Saturday 
created_at: 1 May 2016, balance: 7500  # Sunday 
created_at: 1 May 2016, balance: 7000  # Sunday 
created_at: 7 May 2016, balance: 5000  # Saturday 
created_at: 7 May 2016, balance: 4000  # " 
created_at: 8 May 2016, balance: 3500  # Sunday 
created_at: 12 May 2016, balance: 7000 # Thursday 

而且可以说本周的终点将是每星期一。我预期的结果将是:

{ 
    2 May 2016 => 7000, # Monday 
    9 May 2016 => 3500, # Monday 
    13 May 2016 => 7000 # Today 
} 

我想在每个星期一的平衡,但是增加了最新的平衡,即使它不是一个星期一。

+0

'created_at'似乎是一个'Date',那是对的吗? (默认是'时间') – Stefan

+1

我不理解结果散列中的键和总和的计算方式。 2016年5月9日是周一,2016年5月13日是周五。我本来预计会有相同的工作日。此外,为什么2016年5月9日的总额包括2016年5月8日星期日的余额,但2016年5月7日星期六的余额不包括余额? – Stefan

+0

@Stefan感谢您的回复。这是默认的created_at,所以它应该是日期时间,我只是在我的例子中总结了它。我试图获得最后的余额,所以它应该是3500.每天也可能有多个帐户活动,我的目标是获得该周的最后余额,这将是最接近5月9日的余额。 – pyfl88

回答

1

组的结果将在今年的一周,一年:

.group("extract(dow from 'created_at'), extract(week from 'created_at')") 

再选择余额的总和此:

.select("sum(balance)") 
+0

感谢您的回复。但是在尝试分组时出现此错误:'ERROR:function pg_catalog.date_part(unknown,unknown)is not unique'。我想我得到的是那一周的最后余额,而不是余额的总和。 – pyfl88