Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 如何在ActiveRecord(RubyonRails)中按一系列值进行分组?_Sql_Ruby On Rails_Activerecord - Fatal编程技术网

Sql 如何在ActiveRecord(RubyonRails)中按一系列值进行分组?

Sql 如何在ActiveRecord(RubyonRails)中按一系列值进行分组?,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有一个ActiveRecord模型,它有两列我想要分组和求和(都是整数)。我似乎无法解决的问题是如何将第一列作为第二列的一组求和,第二列按范围分组 我知道我可以做Model.sum(:first_column,group::second_column),但这会导致许多组,因为第二列的值是分散的。如何对第二列的值进行分组,例如在10(0-9、10-19、20-29等)的范围内?您可以在SQL中按表达式分组,而不必只按列分组。您可以这样做: Model.sum(:first_column, :gr

我有一个ActiveRecord模型,它有两列我想要分组和求和(都是整数)。我似乎无法解决的问题是如何将第一列作为第二列的一组求和,第二列按范围分组


我知道我可以做Model.sum(:first_column,group::second_column),但这会导致许多组,因为第二列的值是分散的。如何对第二列的值进行分组,例如在10(0-9、10-19、20-29等)的范围内?

您可以在SQL中按表达式分组,而不必只按列分组。您可以这样做:

Model.sum(:first_column, :group => 'second_column / 10')
Model.group('second_column / 10').sum(:first_column)
或者像这样:

Model.sum(:first_column, :group => 'second_column / 10')
Model.group('second_column / 10').sum(:first_column)
这两种方法都应该向数据库发送如下SQL:

select sum(first_column), second_column / 10
from models
group by second_column / 10

将有别名,引用。。。但是效果是一样的。

您可以在SQL中按表达式分组,而不必只按列分组。您可以这样做:

Model.sum(:first_column, :group => 'second_column / 10')
Model.group('second_column / 10').sum(:first_column)
或者像这样:

Model.sum(:first_column, :group => 'second_column / 10')
Model.group('second_column / 10').sum(:first_column)
这两种方法都应该向数据库发送如下SQL:

select sum(first_column), second_column / 10
from models
group by second_column / 10

将有别名,引用。。。但是效果是一样的。

太棒了——我没意识到我可以用一个表情来分组。谢谢太棒了-没想到我可以用一个表情来分组。谢谢