我试图在ActiveRecord中进行计算,虽然我没有正确的数据,所以我练习使用我拥有的一些数据。 (这就是为什么这个例子不具备逻辑意义的原因)
这是我从
开始的Report.sum("p")
=> 11749577
Report.sum("c")
=> 2534695
因此,总和应为14284272
。
然而,我后来继续
Report.sum("p+c")
=> 7976209
当然,我永远不会真正做到这一点,但我后来需要用乘法来做。我已尝试过各种方式(使用空格,使用calculate
等),但我似乎总是得到错误的答案。
此外,对减法求和也给出了同样奇怪的答案:
Report.sum("p-c")
=> 2906819
另外,我知道在对一个变量进行求和时我应该使用符号,但它会得到相同的结果。
顺便说一下,我使用的是PostgreSQL。
任何人都可以帮助我吗?谢谢!
答案 0 :(得分:1)
我最好的猜测是,你在这些列上使用了一个smallint,当你做一笔总和(或沿着这些行的某些东西)时,你会使用smallint的大小。
要进行故障排除,ActiveRecord只是使用sql来获得此结果。查看development.log文件的结尾,您将看到生成的sql类似于SELECT SUM(p+c) AS sum_id FROM reports
。如果直接对数据库运行相同的查询,是否会得到相同的结果?