* 相関サブクエリを使ってランキングを求める [#e7a5749d]

** 前提 [#va69cef6]
numの大きい者順にランキングを求める。
  id | num
 ----+-----
   1 | 100
   2 | 200
   3 | 150
   4 |  50
   5 | 100

** SQL [#qe183850]
相関サブクエリを使う。
 SELECT y.id, y.num, (SELECT COUNT(*) FROM t1 x WHERE y.num < x.num) + 1AS rank FROM t1 y ORDER BY rank;
 SELECT y.id, y.num, (SELECT COUNT(*) FROM t1 x WHERE y.num < x.num) + 1 AS rank FROM t1 y ORDER BY rank;

** 結果 [#t014d277]
  id | num | rank
 ----+-----+------
   2 | 200 |    1
   3 | 150 |    2
   1 | 100 |    3
   5 | 100 |    3
   4 |  50 |    5

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