* ある項目が初出した行を求める2 [#ieda3418]

** 命題 [#ldca0252]
以下のようなテーブルがある。
  id |     dt     | num
 ----+------------+-----
  a  | 2011-04-01 |   1
  a  | 2011-02-01 |   2
  a  | 2011-06-01 |   3
  b  | 2011-02-01 |   2
  c  | 2011-01-01 |   4
  c  | 2011-02-01 |   3

この時、idに注目して、あるidのレコードの内、dtが一番早いレコードのnumを抽出したい。


** 解答 [#gb7d5d0a]


 SELECT id, (SELECT num FROM t1 WHERE dt <= MIN(x.dt) AND id = x.id) AS num FROM t1 x GROUP BY id ORDER BY id;

  id | num
 ----+-----
  a  |   2
  b  |   2
  c  |   4

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS