比较Rails中mysql条目的简单方法

比较Rails中mysql条目的简单方法,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,在我的数据库中,我有如下条目: username score date User1 10 1/1/2013 User2 4 1/1/2013 User3 4 1/1/2013 User4 5 1/1/2013 ... User1 1 10/1/2013 User2 3 10/1/2013 User3 4 10/1/2013 User4 17 10

在我的数据库中,我有如下条目:

username score     date
User1      10    1/1/2013
User2       4    1/1/2013
User3       4    1/1/2013
User4       5    1/1/2013

...

User1       1    10/1/2013
User2       3    10/1/2013
User3       4    10/1/2013
User4      17    10/1/2013
我需要找出哪个用户的分数变化最大。这并不容易,因为大约有3万用户。所以我认为有一种更为简单的方法,而不是查询所有的数据并进行计算


UPD:日期也是以datetime格式存储的,我不知道存储分数的确切时间…

如果更改次数最多,您的意思是更改次数最多,那么SQL将类似于:

SELECT username, COUNT(*) as times_changed FROM table_name GROUP BY username ORDER BY times_changed DESC LIMIT 1;
您可以通过以下方式运行:

 result = ActiveRecord::Base.connection.execute(sql)
如果表很大,最好缓存每个用户记录中更改的次数

如果您的意思是在两个给定日期之间更改了最大的数字量,那么SQL将如下所示:

SELECT t1.username, ABS(t1.score - t2.score) AS difference FROM table_name AS t1 JOIN table_name AS t2 WHERE t1.username = t2.username AND t1.date = 'date here' AND t2.date = 'other date here';

假设,要获取该表布局中得分差异最大的用户:

Select username, max(score) 
from (
    select C1.username, abs(C1.score - C2.score) score from table_name C1, table_name C2 
    where C1.username = C2.username and C1.score <> C2.score
) as T;

从第一个条目更改为最后一个条目的次数最多?或者从最近的条目到最后一个条目?第二个是我需要在两个给定日期之间更改的最大数字量。但我在查询时出错了。ActiveRecord::StatementInvalid:Mysql2::Error:字段列表中的“user”列不明确:Alex,请您将其更改为不使用确切日期,而是使用日期范围,因为一个用户可以为一个日期输入多个条目。最好的情况是SQL将采用给定日期的最新条目。可能吗?我有一个错误:“字段列表”中的未知列“分数”:在我的表中,分数每天都存储,但我想将今天的分数与一周前的分数进行比较。