ruby-on-rails - 如何使用 SQL 获取按年份分组的最新值

标签 ruby-on-rails postgresql

我有一个 Company 模型,has_many Statement

class Company < ActiveRecord::Base
  has_many :statements
end

我想获取具有按 fiscal_year_end 字段分组的最新 date 字段的 statements

我实现了这样的功能:

c = Company.first
c.statements.to_a.group_by{|s| s.fiscal_year_end }.map{|k,v| v.max_by(&:date) }

它工作正常,但如果可能的话我想使用 ActiveRecord 查询(SQL),这样我就不需要将不必要的实例加载到内存中。

如何使用SQL编写?

最佳答案

select t.username, t.date, t.value
from MyTable t
inner join (
    select username, max(date) as MaxDate
    from MyTable
    group by username
) tm on t.username = tm.username and t.date = tm.MaxDate

关于ruby-on-rails - 如何使用 SQL 获取按年份分组的最新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345467/

相关文章:

css - 如何创建具有不同列宽的动态网格

PostgreSQL:如何选择具有特定专长的集群?

regex - 在 PostgreSQL 中搜索 jsonb 数组

sql - 如何确保 Column_A 仅在 Column_B 为 NULL 时才有值?反之亦然

ruby-on-rails - scope为数组类型时,如何在url中正确写入参数?

ruby-on-rails - ActiveResource分页

javascript - 从 Rails link_to 调用 jQuery 函数

html - 如何使用 `content_for?`方法实现动态布局列?

c++ - QSqlDatabase/QSqlQuery 终止正在运行的查询?

database - 访问数据库中平均静态数据的最佳方式(Hibernate、Postgres)