我坚持要获得以下内容,以便逐月显示计数,即使该月的零数也是如此。
如果我使用的话,从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 |
我该怎么做呢。
谢谢。
答案 0 :(得分:1)
这有点hacky,但这样的事情应该有效:
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] }
基本上从数据库加载结果,然后通过迭代几个月来构建自定义数据结构。对于自定义结构,将count设置为数据库中的值(如果可用),否则为0。