我有一个包含股票价格的历史数据库。我想为每个列出的股票选择最近的价格。我知道PostreSQL有一个DISTINCT ON声明,这在理想情况下适用于此。
表列为name
,closingPrice
和date
; name
和date
一起构成一个唯一索引。
的最简单(非常uneffective)的方法是
SELECT * FROM stockPrices s
WHERE s.date =
(SELECT MAX(date) FROM stockPrices si WHERE si.name = s.name);
更好的方法,我发现是
SELECT *
FROM stockPrices s JOIN (
SELECT name, MAX(date) AS date
FROM stockPrices si
GROUP BY name
) lastEntry ON s.name = lastEntry.name AND s.date = lastEntry.date;
什么将是一个有效的方式做到这一点?我应该创建哪些索引?
我在搜索失败。 – skolima 2008-09-10 09:22:09