0

私はこのようなテーブルを持っています

 id    | name
----------
1      | A
2      | B
5      | C
100    | D
200    | E
201    | F
202    | G

から行をランク付けする必要があります1 to 3 order by id。つまり、結果が必要です。

 id    | name | ranking
---------------------------
1      | A    | 1
2      | B    | 2
5      | C    | 3
100    | D    | 1
200    | E    | 2
201    | F    | 3
202    | G    | 1

これを作る方法は?

PS

やっています:

 SELECT  id, name, row_number() OVER( order by id RANGE  BETWEEN 1 AND 3 ) AS ranking FROM t

これにより、構文エラーが発生します。

4

1 に答える 1

1

RANGE実際には別の目的で使用されます。

http://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS

http://www.postgresql.org/docs/current/static/sql-select.html

代わりに係数を使用してみてください。

SELECT  id, name, 1 + (row_number() OVER( order by id ) - 1) % 3 AS ranking
FROM t
于 2013-06-12T10:52:16.643 に答える