SELECTした順番に連番付けたいときありますよね。OracleだとROWNUMというものがあるらしいです。PostgreSQLでは、Ver8.4以降に実装されたWindows関数を利用するのが簡単だと思います。
Window関数ってのは、GROUP BYを集約せず、それぞれのROWに対して関数を摘要するものです。データの中に窓を作るイメージからWindow関数と呼ぶのでしょう。
さて、本題の連番を付ける方法です。
SELECT row_number() OVER (ORDER BY timestamp) AS i, timestamp FROM usdjpy
row_number() OVER (ORDER BY timestamp)
が肝となる部分です。連番を付けたい順番を指定しましょう。
Window関数 — Let's Postgresにあるように下記のような書き方もあるみたいですね。
SELECT row_number() OVER (), * FROM (SELECT * FROM tbl ORDER BY sortkey) AS t;