Sql 在数据库中按月分组,而不是使用ruby
我试图按月对Sql 在数据库中按月分组,而不是使用ruby,sql,ruby-on-rails,ruby,postgresql,group-by,Sql,Ruby On Rails,Ruby,Postgresql,Group By,我试图按月对调用进行分组,但我需要在数据库中进行分组,而不是使用ruby。以下是当前代码: Call.limit(1000).group_by { |t| t.created_at.month } 返回: SELECT `calls`.* FROM `calls` ORDER BY created_at desc LIMIT 1000 然后ruby进行分组。我应该怎么做才能让数据库完成工作 谢谢。使用Call.limit(1000).group(“月(创建时间)”) 请签出适合您的mysql
调用进行分组,但我需要在数据库中进行分组,而不是使用ruby
。以下是当前代码:
Call.limit(1000).group_by { |t| t.created_at.month }
返回:
SELECT `calls`.* FROM `calls` ORDER BY created_at desc LIMIT 1000
然后ruby
进行分组。我应该怎么做才能让数据库完成工作
谢谢。使用Call.limit(1000).group(“月(创建时间)”)
请签出适合您的mysql日期时间方法。但是.group()将执行mysql分组
简单的回答是,在SQL级别无法实现相同的结果
下面是完整的解释
首先,那个电话的结果应该是什么?您可以使用PG/SQL语句,但是结果可能不是您所期望的
GROUPBY语法设计用于使用模式对行进行分组,以及计算和聚合函数。在您的情况下,即使假设您创建了一个使用to的查询,聚合函数也不允许您返回一个类似Rubygroup\u by
方法的数据集
为什么要在数据库级别计算这样的分组
如果您有特定的要求或计算限制,请使用自定义方法。用户使用的是PG,而不是MySQL。哦,好的,在这种情况下,它将不起作用。尝试pgsql方法:提取(时间戳'2001-02-16 20:38:40'中的月份),而不是提取月份。