【发布时间】:2012-07-03 19:18:28
【问题描述】:
请帮我重写它,以便它可以在 Heroku 上运行,其中 PostgreSQL (8.3.11) 不理解 over 关键字。
SELECT
user_id,
round(max(hspeed) * 2.238) as chs,
percent_rank() over (partition by con_size_id ORDER BY MAX(hspeed))
FROM
summaries ss
INNER JOIN spaths s ON ss.spath_id = s.id
INNER JOIN cons c ON c.id = s.con_id
INNER JOIN users u ON c.user_id = u.id
WHERE
con_size_id = 1
GROUP BY
user_id,
con_size_id;
“user_id”和“con_size_id”来自“cons”表,“hspeed”来自“summaries”。
【问题讨论】:
-
Heroku 是否支持完整的 ANSI SQL 92 语法?
-
我怀疑“over”是否来自 ANSI SQL 92。他们说这种语法在 PG 9.1 中可用,只能用于生产数据库。他们说:几乎完全符合 ANSI-SQL 92 和大量符合 ANSI 99 (paragoncorporation.com/ArticleDetail.aspx?ArticleID=11)
-
PostGres 支持
Percent_Rank()。 postgresql.org/docs/8.4/static/functions-window.html -
PGError: ERROR: 在“over”处或附近出现语法错误
-
PostgreSQL 在 8.4 中获得了窗口函数,您的 Heroku 数据库仍在使用 8.3。可以升级到专用数据库或 9.1 吗?见blog.heroku.com/archives/2012/5/1/…
标签: postgresql heroku window-functions