ruby-on-rails - Postgres 列为列

标签 ruby-on-rails ruby postgresql

我有以下查询:

SELECT name, rank() OVER (PARTITION BY user_id ORDER BY love_count DESC) AS position FROM items

现在我想在 rank() 函数上做一个 where 子句:

SELECT name, rank() OVER (PARTITION BY user_id ORDER BY love_count DESC) AS position FROM items WHERE position = 1

也就是我要查询每个用户最喜欢的商品。但是,这会导致:

PGError:错误:列“位置”不存在

此外,我正在使用 Rails AREL 来执行此操作并希望启用链接。这是创建查询的 Ruby 代码:

Item.select("name, rank() OVER (PARTITION BY user_id ORDER BY love_count DESC) AS position").where("position = 1")

有什么想法吗?

最佳答案

您需要将其“包装”到派生表中:

SELECT * 
FROM (
    SELECT name, 
           rank() OVER (PARTITION BY user_id ORDER BY love_count DESC) AS position 
    FROM items
) t
WHERE position = 1

关于ruby-on-rails - Postgres 列为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7773759/

相关文章:

postgresql - postgresql中的触发器和事件触发器有什么区别?

sql - Postgres : Add constraint if it doesn't already exist

mysql - MySQL与Aptana Studio3

mysql - Ruby 创建临时文件来保存 CSV 行并将其分配给数据库

mysql - 具有多个来源的 Rails 模型概念

ruby - 我该如何分析 ruby​​ 单元测试的执行情况?

ruby-on-rails - 文件上传的 MIME 类型为 "application/x2x-download"- 那是什么?

ruby-on-rails - 如何将字符串拆分为二维数组并将运算符应用于 Rails 3.2 中的数组元素?

ruby - 你如何在 ruby​​ 中列出当前范围内的当前可用对象?

postgresql - Airflow sql炼金术池大小被忽略