Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在数据库中按月分组,而不是使用ruby_Sql_Ruby On Rails_Ruby_Postgresql_Group By - Fatal编程技术网

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的查询,聚合函数也不允许您返回一个类似Ruby
group\u by
方法的数据集

为什么要在数据库级别计算这样的分组


如果您有特定的要求或计算限制,请使用自定义方法。

用户使用的是PG,而不是MySQL。哦,好的,在这种情况下,它将不起作用。尝试pgsql方法:提取(时间戳'2001-02-16 20:38:40'中的月份),而不是提取月份。