sql—如何在postgresql中创建以4步为增量的列

flseospp  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(368)

我正在尝试向表中添加一列,该列以四个步骤递增,如下所示:

1
    1
    1
    1
    2
    2
    2
    2
    3
    3
    3
    3
etc.

我一直在读有关创建序列,但这似乎不是我需要的。
有人对如何做到最好有什么建议吗?

5w9g7ksd

5w9g7ksd1#

你可以用 row_number() 和整数除法:

select
    t.*,
    (3 + row_number() over(order by id)) / 4 rn
from mytable t

这假设您有一个名为 id . 实际上,我不建议存储这些派生信息。你可以在飞行中计算它,或者把它放到一个视图中。

hjqgdpho

hjqgdpho2#

您仍然可以使用常规序列作为默认值,但请改为执行以下操作:

CREATE TABLE test (col1 int, col2 text);

CREATE SEQUENCE test_col1_seq OWNED BY test.col1;

ALTER TABLE test ALTER COLUMN col1 SET DEFAULT ceil(nextval('test_col1_seq')/4::numeric);

SELECT * FROM test;
 col1 | col2 
------+------
    1 | a
    1 | b
    1 | c
    1 | d
    2 | e
    2 | f
    2 | g
    2 | h
    3 | i
(9 rows)

这只是除以4,然后向下舍入值。

相关问题