【发布时间】:2015-12-11 07:17:52
【问题描述】:
Company.group('year(created_at)').group('month(created_at)').count
#=> {[2015, 4]=>62, [2015, 5]=>77, [2015, 6]=>61, [2015, 7]=>19, [2015, 8]=>16}
上述 AR 查询返回按年和月分组的公司计数。
问题在于它不会返回包含 零 家公司的组的任何条目。
我希望查询返回所有组,包含从创建第一家公司的月份开始的每个月_at 到当前月份,如下所示:
{[2015, 4]=>62, [2015, 5]=>77, [2015, 6]=>61,
[2015, 7]=>19, [2015, 8]=>16, [2015, 9]=>0} #note the last entry - it is September (9nth month) with zero companies.
我知道,MySQL 至少需要一行才能返回一个组。
是否有(确定有)我需要的解决方法?
编辑
我正在寻找一种不引入任何新表左右的 AR 查询解决方案。
【问题讨论】:
-
是的,我讨厌长的单行sn-ps代码。当您滚动它们时,滚动条会隐藏大部分代码,并且无法阅读或查看您是否滚动了足够多的代码:)
-
当然,我曾经将这么长的sn-ps复制到控制台或其他地方以查看整个内容!
-
如果你在 sqlfiddle 中创建了一个示例数据集,我会修改它:)
-
我还没有。您是否有机会根据您的任何 Rails 项目数据库寻找解决方案?
-
你有没有想过calendar table?该网站非常蹩脚,但这样的表格有很多很棒的用例。这是我的recent usecase。
标签: mysql sql ruby-on-rails activerecord grouping