0

我坚持让以下内容按月显示计数组,即使该月的计数为零。

如果我使用,从 rails 控制台:

StorageRequest.select("MONTH(created_at) as month, COUNT(id) as total").where(:created_at => 3.months.ago.to_date..Date.today).group("month")

我越来越:

| 月 | 总计|

| 9 | 4 |

我期望得到的地方:

| 月 | 总计|

| 8 | 0 |

| 9 | 4 |

| 10 | 0 |

我该怎么办。

谢谢你。

4

1 回答 1

1

这有点骇人听闻,但这样的事情应该可以工作:

results = {}
StorageRequest.select("MONTH(created_at) as month, COUNT(id) as total").where(:created_at => 3.months.ago.to_date..Date.today).group("month").each { |m| results[m.month] = m.total }
(1..12).map { |m| [m, results[m] || 0] }

基本上从数据库加载结果,然后通过迭代几个月来构建自定义数据结构。对于自定义结构,将计数设置为数据库中的值(如果可用),否则设置为 0。

于 2013-10-29T20:26:33.367 回答