Sql 获取记录之间差异的最佳方法是什么;柱

Sql 获取记录之间差异的最佳方法是什么;柱,sql,ruby-on-rails,ruby,activerecord,Sql,Ruby On Rails,Ruby,Activerecord,我有一个模型计数器记录和列数据。记录列表: r1.data = 10 r2.data = 12 r3.data = 15 r4.data = 20 我想了解当前记录和以前记录之间的差异[10,2,3,5]。Rails是否有默认的方式来实现这一点 rails是否有默认的方式来实现这一点 没有 可能的解决办法: CounterRecord.pluck(:data).each_cons(2).map { |first, second| second - first } 注意:对于大量记录,这将很

我有一个模型
计数器记录
和列
数据
。记录列表:

r1.data = 10
r2.data = 12
r3.data = 15
r4.data = 20
我想了解当前记录和以前记录之间的差异
[10,2,3,5]
。Rails是否有默认的方式来实现这一点

rails是否有默认的方式来实现这一点

没有


可能的解决办法:

CounterRecord.pluck(:data).each_cons(2).map { |first, second| second - first }

注意:对于大量记录,这将很容易破坏您的内存。

我不认为
Rails
ActiveRecord
有这样的东西,但使用少量ruby就可以很容易地做到:

CounterRecord.pluck(:data).each_with_index.map { |c,i| a[0] == c ? c : (a[i-1].to_i - c).abs }

这样做没有默认方法。

我认为Rails没有默认方法。您需要使用普通SQL。@Ilya true。EditedI之前尝试过
每个切片
,但它没有给出所需的输出。.你执行了吗?@Md.FarhanMemon,也许你应该使用
。在
每个切片
之后使用
@Ilya
到a
在这里不需要。不,问题在于
切片
本身<代码>[10,12,15,20]。每个\u片(2)。to\u a
返回
[[10,12],[15,20]]
,所需内容如下
[[10,12],[12,15],[15,20]]