从取得每天只有一条记录

问题描述 投票:0回答:1

我有一个货币表,我想捕捉1周内的日期值的所有值。我这样做的查询和管理,以得到结果:

Currency.where (date: (1.week.ago..Date.today.end_of_day)

这个日期栏是日期时间。

我现在想只记录在全天最高日纪录。也就是说,我想获得7条记录(一个从一周的每一天),这记录是最后记录的那一天的(最高的日期列的值)。

我怎样才能使活动记录此查询?

我试着用date_trunc但我没有成功。我的数据库是PostgreSQL的

DLL表:

货币(ID:整数,currency_kind:整数,值:浮子,日期:日期时间,created_at:日期时间,的updated_at:日期时间)

class CreateCurrencies < ActiveRecord::Migration[5.2]
  def change
    create_table :currencies do |t|
      t.integer :currency_kind
      t.float :value
      t.datetime :date

      t.timestamps
    end
  end
end

例如用Currency.all

=> #<ActiveRecord::Relation [#<Currency id: 51, currency_kind: "eur", value: 4.18835, date: "2019-02-04 05:37:59", created_at: "2019-02-04 03:08:08", updated_at: "2019-02-04 03:08:08">, #<Currency id: 52, currency_kind: "usd", value: 3.6593, date: "2019-02-04 05:37:59", created_at: "2019-02-04 03:08:08", updated_at: "2019-02-04 03:08:08">, #<Currency id: 53, currency_kind: "aud", value: 2.65061, date: "2019-02-04 05:37:59", created_at: "2019-02-04 03:08:08", updated_at: "2019-02-04 03:08:08">, #<Currency id: 54, currency_kind: "eur", value: 4.18755, date: "2019-02-04 02:47:58", created_at: "2019-02-04 03:18:13", updated_at: "2019-02-04 03:18:13">, #<Currency id: 55, currency_kind: "usd", value: 3.6593, date: "2019-02-04 02:47:59", created_at: "2019-02-04 03:18:13", updated_at: "2019-02-04 03:18:13">, #<Currency id: 56, currency_kind: "aud", value: 2.6497, date: "2019-02-04 02:47:59", created_at: "2019-02-04 03:18:13", updated_at: "2019-02-04 03:18:13">, #<Currency id: 57, currency_kind: "eur", value: 4.19655, date: "2019-02-04 22:55:59", created_at: "2019-02-04 23:26:40", updated_at: "2019-02-04 23:26:40">, #<Currency id: 58, currency_kind: "usd", value: 3.6692, date: "2019-02-04 22:55:59", created_at: "2019-02-04 23:26:40", updated_at: "2019-02-04 23:26:40">, #<Currency id: 59, currency_kind: "aud", value: 2.6499, date: "2019-02-04 22:55:59", created_at: "2019-02-04 23:26:40", updated_at: "2019-02-04 23:26:40">, #<Currency id: 60, currency_kind: "eur", value: 4.1943, date: "2019-02-04 23:27:02", created_at: "2019-02-04 23:27:09", updated_at: "2019-02-04 23:27:09">, ...]>
ruby-on-rails postgresql activerecord
1个回答
0
投票

你需要这样的事

Currency.select("rate, MAX(DATE_FORMAT(date, '%Y-%m')) as max_date").where(date: 1.week.ago..Date.today.end_of_day).group("DATE_FORMAT(date, '%Y-%m')")
© www.soinside.com 2019 - 2024. All rights reserved.