【发布时间】:2021-08-06 12:59:27
【问题描述】:
我想对我的表进行排序,但其中包含 NaN 值,
问题在于 ruby/rails NaN 被认为是最高的,而我想将其设为最低?
我正在考虑从列表中删除 NaN 排序非 NaN 列表并在其后添加 NaN
谁有更方便的方法?
我的数据库是 postgresql,列类型是 Decimal/BigDecimal,值是 Decimal/BigDecimal
架构是
create_table "download_speeds", force: :cascade do |t|
t.bigint "location_id", null: false
t.string "operator_name"
t.decimal "avg"
t.decimal "min"
t.decimal "max"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["location_id"], name: "index_download_speeds_on_location_id"
end
我想根据avg 列降序对downloads_speeds 进行排序/排名
最高的avg 最高(排名1)
【问题讨论】:
-
您使用的是什么数据库?您要排序的列的类型是什么?里面有什么样的价值观?
-
@Josien 更新
-
这就是PG的
NaN排序的工作原理;如果您想要不同的东西,您可能需要 (a) 对返回的数据进行后处理,(b) 仅对有价值的行进行排序并分别检索NaNs 并进行连接,或者 (c) 改用有意义的值首先是NaN。也就是说,我根本不是 PG 专家 :) -
是的,这是我目前的方法@DaveNewton
-
@DaveNewton 感谢洞察这个问题也提供了解决方案stackoverflow.com/questions/48725372/…
标签: ruby-on-rails postgresql rails-activerecord pg