首页 > 解决方案 > 如何在 Postgresql 中创建以 4 为步骤递增的列

问题描述

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

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

我一直在阅读有关 CREATE SEQUENCE 的内容,但这似乎不是我所需要的。

有没有人有任何建议如何最好地做到这一点?

标签: sqlpostgresqlselectsequencewindow-functions

解决方案


您可以使用row_number()整数除法:

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

这假设您有一个名为 的排序列id。我实际上并不建议存储这些派生信息。您可以即时计算它,也可以放入视图中。


推荐阅读