generate_series (applicable to GP) usage analysis

generate_series (GP): A series of filling data can be generated according to different rules

Int type

(1) generate_series(start, stop, —) generates a sequence of values, from start to stop, the step is—
  Example:

       Default is 1 when no step is written

select generate_series(1, 10);
 generate_series 
-----------------
               1
               2
               3
               4
               5
               6
               7
               8
               9
              10
(10 rows)

( 2 ) generator ate_series(start, stop, step) generates a numerical sequence, from start to stop, the step is step

set step function

select generate_series(1, 10, 3);
 generate_series 
-----------------
               1
               4
               7
              10
(4 rows)  

If step is positive and start is greater than stop, then zero rows are returned. Conversely, if step is negative and start is less than stop, zero rows are returned. For NULL input, zero rows are also produced. A step of zero is an error

 start is greater than stop

select generate_series(5,1);
 generate_series 
-----------------
(0 rows)

stop is empty NULL

 select generate_series(5,null);
 generate_series 
-----------------
(0 rows)

start is greater than stop, step is zero

select generate_series(5,1,0);
ERROR:  step size cannot equal zero

start is greater than stop, step is negative

select generate_series(5,1,-1);
generate_series
-----------------
               5
               4
               3
               2
               1
(5 rows)


Time type (24-hour cut)

select
    generate_series(date_trunc('day', now()-interval '7 hour') + interval '7 hour',
    date_trunc('day', now()-interval '7 hour') + interval '31 hour','1 hour') as fab_date
  
-------------------------------
 2021-11-29 07:00:00
2021-11-29 08:00:00
2021-11-29 09:00:00
2021-11-29 10:00:00
2021-11-29 11:00:00
2021-11-29 12:00:00
2021-11-29 13:00:00
2021-11-29 14:00:00
2021-11-29 15:00:00
2021-11-29 16:00:00
2021-11-29 17:00:00
2021-11-29 18:00:00
2021-11-29 19:00:00
2021-11-29 20:00:00
2021-11-29 21:00:00
2021-11-29 22:00:00
2021-11-29 23:00:00
2021-11-30 00:00:00
2021-11-30 01:00:00
2021-11-30 02:00:00
2021-11-30 03:00:00
2021-11-30 04:00:00
2021-11-30 05:00:00
2021-11-30 06:00:00
(24 rows)

Summarize:

The generate_series function of PostgreSQL has many application scenarios for generating test data and updating certain regular data in batches. Proper use can improve development efficiency.

Guess you like

Origin blog.csdn.net/qq_45967480/article/details/121603216