【发布时间】:2014-12-17 16:46:45
【问题描述】:
我试图找出一种有效的方法来从一组数据中识别出一组“创纪录的高”值。这比仅仅找到最大值更复杂,因为我想找到在记录它们时是最大值/记录高值的所有值。因此,为了尽可能简化问题,想象一个模型/数据库表,如下所示:
Temperatures(date, value)
具有如下值:
*1/1/2001: 79
*1/2/2001: 81
1/3/2001: 81
1/4/2001: 80
*1/5/2001: 82
1/6/2001: 81
*1/7/2001: 90
我正在尝试查找有助于将上面带星号 ("*") 的记录识别为“记录”的查询。 rails finder 或 raw sql 语句都可以正常工作。到目前为止,我得到的最好的结果是一个查询,它会告诉我给定的值是否是一个记录,但这并不能很好地扩展。
【问题讨论】:
-
我不认为它可以很容易地转换为 SQL,但是根据日期排序并在保持最大值的同时进行迭代应该可以解决问题。如果您的数据太大,可能不可行,您的数据规模是多少?您需要多久执行一次此查询?
-
SELECT [Date], MAX([Value]) FROM Temperatures GROUP BY [Date]怎么样?我正在对您的数据做出假设,这就是为什么这是评论,而不是答案
标签: sql ruby-on-rails algorithm ruby-on-rails-4 query-optimization