【问题标题】:Repeating n row numbers in SQL在 SQL 中重复 n 行号
【发布时间】:2022-11-03 01:31:22
【问题描述】:

在 postgresql 语法中,row_number() 可用于生成增量整数,如下例所示。将如何重复这些整数n 次或直到行长度用完?例如,使用以下语法,如果目标是重复每个增量整数 5 次,如何为 rownum_repeat 生成以下输出? :

CREATE TABLE public.examples (
    id SERIAL PRIMARY KEY,
    text VARCHAR(200) NOT NULL
);

INSERT INTO
    public.examples (text)
VALUES
    ('val1'), ('val2'), ('val3'),  ('val4'), ('val5'), ('val6'), ('val7');

SELECT
    *
,ROW_NUMBER() OVER () AS rownum
FROM
    public.examples;


id  text    rownum rownum_repeat
1   "val1"  1      1
2   "val2"  2      1
3   "val3"  3      1
4   "val4"  4      1
5   "val5"  5      1
6   "val6"  6      2
7   "val7"  7      2

【问题讨论】:

    标签: sql postgresql repeat


    【解决方案1】:

    在简单算术中使用行号:

    SELECT
        *,
        ROW_NUMBER() OVER (ORDER BY id) AS rownum,
        (ROW_NUMBER() OVER (ORDER BY id)- 1) / 5+ 1 as rownum_repeat
    FROM
        public.examples
    ORDER BY id;
    

    Db<>fiddle.

    请注意,行号取决于排序顺序。

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 2013-06-20
      • 1970-01-01
      • 2018-08-10
      • 2012-10-09
      • 2021-10-25
      相关资源
      最近更新 更多