使用ActiveRecord链接复杂查询

时间:2014-05-11 23:17:30

标签: ruby-on-rails ruby activerecord ruby-on-rails-4

假设我有一个rails模型,Table,方法location,a1,a2,a3

我有一个表格

的postgresql查询
SELECT avg(val) FROM (
    SELECT unnest(array[a1,a2,a3]) as val FROM table WHERE location = 'USA') alias; 

我想使用activerecord而不是原始SQL来进行,主要是因为我希望能够将查询拆分为可链接的,如下所示:

Table.where(location: 'USA').select(...)

(原因是我希望将上面的postgresql查询作为方法移到模型中。)

有什么办法可以做到吗?

1 个答案:

答案 0 :(得分:3)

Table.from( Table.where(location: 'USA').select('unnest(array[a1,a2,a3]) as val'), 'subquery_name' ).average('subquery_name.val')

现在,为了了解上述查询的作用,请研究以下ActiveRecord方法:

  1. from(value, subquery_name = nil)
  2. average(column_name, options = {})
相关问题