2012-07-03 39 views
0

請幫我改寫它,以便在Heroku上運行,PostgreSQL(8.3.11)不瞭解over關鍵字。重寫PostgreSQL查詢Heroku

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」 是從 「缺點」 表中, 「hspeed」 是從 「摘要」。

+0

Heroku是否支持完整的ANSI SQL 92語法? –

+0

我懷疑「over」來自ANSI SQL 92.他們說這個語法在PG 9.1中可用,它只能用於生產數據庫。他們說:非常完整的ANSI-SQL 92合規性​​和很多ANSI 99合規性(http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=11) – Paul

+0

PostGres支持'Percent_Rank()'。 http://www.postgresql.org/docs/8.4/static/functions-window.html –

回答

0

答案是升級到8.4或更高。 8.3和更低版本沒有合理地支持所需的功能,沒有大量複雜的用戶定義函數來包裝您的查詢。