我有一個包含股票價格的歷史數據庫。我想爲每個列出的股票選擇最近的價格。我知道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